MATLAB: What does it mean when there is a class/struct with two dots in the following form

two dots

queue.list.length

Best Answer

Nothing special. It is the same general meaning as when there is only one dot.
The left side of any dot can be either a structure or an object. If it is a structure, then the right of the dot identifies a field name within the structure, which could be of any data type -- including structure or object. So sometimes left.middle.right just means structure field right within structure field middle within structure left
If the left of the dot is a class object, then the right of the dot identifies either a property name within the object or a method name. A property name within an object might be directly associated with data storage (a variable), in which case the contents of the variable is returned. A property name within an object might instead be a "dependent property", in which case a "get" function is called to return the value of the property.
If the left of the dot is a class object and if the right of a dot is a method, then a function is called on the object on the left. The result could be of any data type, including an object. If there is another dot and another method then the method would be called upon the result of whatever was to the left. For example, obj.NextChild.getColor might represent the sequence
getColor(NextChild(obj))
There is another possibility, which is that the left-most item might identify the name of a package; https://www.mathworks.com/help/matlab/matlab_oop/scoping-classes-with-packages.html.
In the case of a package, the middle might indicate a class name, in which case the right part could be a static method being applied to the class indicated within the package -- though static methods typically would require an argument.
In the case of queue.list.length, if it is not followed by an argument, then I would suspect that queue is the name of a variable that is either a structure or an object; if it is a structure then list would be field in the structure that was itself a structure object and length would be a field within that. If queue is the name of a variable that is an object, then I would expect that list is a property in the object and that length() is a method being applied to the property.
In the case of queue.list.length, if it is followed by an argument, then I would suspect that queue is the name of a package with class list inside it that has a static method named length that is to be applied to the argument.