> sqrt 16 4
它也可以通过方法语法调用:
> 16.sqrt 4
有没有办法通过方法语法使用户定义的子程序可以调用?
例如,让我们定义sq:
> sub sq(Int $n) { $n*$n } sub sq (Int $n) { #`(Sub|64042864) ... } > sq 4 16
有没有办法让它可以作为方法调用?即
> 4.sq
Is there a way to make user defined subroutines invokable via method Syntax?
是的,只需使用.&语法,如:
625.&sqrt.say # 25
调用者作为第一个参数传递:
sub sq { $^a² }; say 4.&sq 4.&sq.say # 16
唯一的问题是,如果要将方法链分解为多行,则必须使用unspace:
4.&sq\ .&sq.say;