方法调用语法
对于面向对象的编程,可以使用语法 obj.method(args) 而不是 method(obj, args) 。
如果没有剩余的参数,则可以省略括号: obj.len (而不是 len(obj) )。
此方法调用语法不限于对象,它可用于为过程提供任何类型的第一个参数:
- echo "abc".len # 与echo len"abc"相同
- echo "abc".toUpper()
- echo {'a', 'b', 'c'}.card
- stdout.writeLine("Hallo") # 与相同writeLine(stdout,"Hallo")
查看方法调用语法的另一种方法是它提供了缺少的后缀表示法。
方法调用语法与显式泛型实例化冲突: pT 不能写为 x.p[T] 因为 x.p[T] 总是被解析为 (x.p)[T] 。
见: Limitations of the method call syntax 。
[:] 符号旨在缓解这个问题: xp[:T] 由解析器重写为 pT , xp:T 被重写为 pT 。 注意 [:] 没有AST表示,重写直接在解析步骤中执行。