方法调用语法
对于面向对象的编程,可以用 obj.methodName(args) 语法,取代 methodName(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")
另一种看待方法调用语法的方式是,它是提供缺失的后缀表示法。
方法调用语法与显式泛型实例化冲突: p[T](x) 不能写为 x.p[T] 因为 x.p[T] 总是被解析为 (x.p)[T] 。
See also: 方法调用语法限制。
[: ] 符号是为了缓解这个问题: x.p[:T] 由解析器重写为 p[T](x) , x.p[:T](y) 被重写为 p[T](x, y) 。 注意 [: ] 没有 AST 表示, 直接在解析步骤中进行重写。
当前内容版权归 vectorworkshopbaoerjie 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 vectorworkshopbaoerjie .