>> On 10/1/18 3:37 PM, Donald Hunter wrote: >> > Methods don't accept [], values that are positional do that. >> Is your distinction that [] is actually a routine in itself >> and not part of the method? And I am lumping them together? On 10/2/18 12:18 AM, Laurent Rosenfeld via perl6-users wrote: > Yes, [] acts on the result (a positional, e.g. a list) returned by > function or method, it does not act on the function or method itself.
"acts on the result" is a beautiful way to state it. Just to be clear, the fact that it acts on the result of a method or function doesn't mean a method or function or result has to be involved. Consider: @array[0] A variable `@array` may well not be a result of anything. -------- The thing on the left of a postfix `[...]` may not even do the `Positional` role. The postfix `[]` operattor turns into an an `AT-POS` method call if the thing on the left is a `Positional`. The Positional role defines an `AT-POS` method. Anything that does the `Positional` role will work as the left hand side of a postfix `[...]`. But other types that *don't* do the `Positional` role can still have an `AT-POS` method and a postfix `[...]` will work with them too. ------ In particular the built in `Any` has an `AT-POS`. So you can append a `[...]` to any single thing and it'll work: 42[0] The above results in 42. 42[1] yields "Index out of range. Is: 1, should be in 0..0" ----- So, to recap: a postfix `[]` acts on whatever is on its left, pulling out elements from the thing on its left, treated as a list like thing, with the elements selected according to the index(es) inside the brackets. -- raiph