Method precedence
Method precedence is controlled by the following two method separators: .
and ->
.
1 + 25.sqrt # means: 1 + sqrt(25)
1 + 25->sqrt # means: sqrt(1 + 25)
The rules are the following:
.
binds the method to the object which precedes the dot->
makes everything from its left-side an expression and applies the method on the result
The infix backslash (\
) removes any leading or trailing whitespace at that current position and it's useful for expanding method calls on multiple lines:
say "abc".uc \
.reverse \
.chars
is equivalent with:
say "abc".uc.reverse.chars