支持调用自身对象的的角色。它用于 Block
、Routine
、Sub
、Method
、Submethod
和 Macro
类型。
可调用对象可以存储在以 &
为标记的容器中,此类容器的默认类型约束为 Callable
。
my = ; # Empty block needs a semicolonmy = -> ;my = sub () ;sub foo() ;my = ;
方法§
方法 CALL-ME§
method CALL-ME(Callable : |arguments)
此方法对于 ( )
后缀运算符 和 .( )
后缀运算符 是必需的。它使对象真正可调用,需要重载以使给定对象的行为像例程一样。如果需要将对象存储在以 &
为标记的容器中,则必须实现 Callable。
does Callablemy = A;say a(); # OUTPUT: «called»
应用 Callable
角色不是使对象可调用的要求;如果某个类只是想在常规标量容器中添加类似子例程的语义,则可以使用子方法 CALL-ME
。
my = A.new: values => [4,5,6,7];say (2); # OUTPUT: «6»
方法 Capture§
method Capture()