• 方法调用语法

    方法调用语法

    对于面向对象的编程,可以使用语法 obj.method(args) 而不是 method(obj, args)

    如果没有剩余的参数,则可以省略括号: obj.len (而不是 len(obj) )。

    此方法调用语法不限于对象,它可用于为过程提供任何类型的第一个参数:

    1. echo "abc".len # 与echo len"abc"相同
    2. echo "abc".toUpper()
    3. echo {'a', 'b', 'c'}.card
    4. stdout.writeLine("Hallo") # 与相同writeLine(stdout,"Hallo")

    查看方法调用语法的另一种方法是它提供了缺少的后缀表示法。

    方法调用语法与显式泛型实例化冲突: pT 不能写为 x.p[T] 因为 x.p[T] 总是被解析为 (x.p)[T]

    见: Limitations of the method call syntax 。

    [:] 符号旨在缓解这个问题: xp[:T] 由解析器重写为 pTxp:T 被重写为 pT 。 注意 [:] 没有AST表示,重写直接在解析步骤中执行。