如何引用 Raku 中的现有方法?

uzl*_*xxx 7 reference function raku function-reference

正如文档中所解释的,您可以通过在前面添加 sigil 来引用现有函数&

&say       # reference to the `say` function
&infix:<+> # reference to the infix `+` operator
Run Code Online (Sandbox Code Playgroud)

我该如何为方法执行此操作?

uzl*_*xxx 6

本文作者解释了获取方法对象的几种可能性,但这里最相关的是使用 MOP 方法.^lookup

\n
say Array.^lookup(\'push\').raku\n\n#`\xc2\xab\nproto method push ($: |) {*}\n\xc2\xbb\n
Run Code Online (Sandbox Code Playgroud)\n

例如,要获取所有候选人的方法签名,Arraypush可以这样做:

\n
.say for Array.^lookup(\'push\').candidates.map(*.signature);\n\n#`\xc2\xab\n(Any:U \\SELF: |values)\n(Array:D: Slip \\value, *%_ --> Array:D)\n(Array:D: \\value, *%_ --> Array:D)\n(Array:D: **@values is raw, *%_ --> Array:D)\n\xc2\xbb\n
Run Code Online (Sandbox Code Playgroud)\n