Method/Sub 在 Raku 中绑定
Method/Sub Binding In Raku
我想知道是否有办法将方法 and/or 绑定到 Raku 中的另一个 method/sub 名称。我已经了解了如何将变量绑定到 method/sub,但这并不是我想要的。我知道如何在 Perl 5 中做到这一点:
sub sub1 {
print "sub1!\n";
}
*sub2 = \&sub1;
sub1(); # sub1!
sub2(); # sub1!
实际上,您对普通变量所做的与对子变量所做的几乎完全相同。
sub sub1 { say "sub1!" }
my &sub2 = &sub1;
sub1; # sub1!
sub2; # sub1!
你不需要绑定,实际上,因为 subs 没有容器化并且 &
-sigiled 变量没有像 @
和 %
这样的特殊分配处理 -符号变量。 (如果你做 .WHICH
或 .WHERE
你可以看到它们指向内存中的同一个地方)。
@user0721090601 已经给出了订阅的答案。对方法做同样的事情稍微复杂一些。幸运的是,生态系统中有一个模块可以让您更轻松地做到这一点:Method::Also。这允许你说:
use Method::Also;
# ...
method foo() is also<bar bazzy> {
然后你也可以调用.bar
和.bazzy
方法,得到与调用.foo
方法相同的结果。
我想知道是否有办法将方法 and/or 绑定到 Raku 中的另一个 method/sub 名称。我已经了解了如何将变量绑定到 method/sub,但这并不是我想要的。我知道如何在 Perl 5 中做到这一点:
sub sub1 {
print "sub1!\n";
}
*sub2 = \&sub1;
sub1(); # sub1!
sub2(); # sub1!
实际上,您对普通变量所做的与对子变量所做的几乎完全相同。
sub sub1 { say "sub1!" }
my &sub2 = &sub1;
sub1; # sub1!
sub2; # sub1!
你不需要绑定,实际上,因为 subs 没有容器化并且 &
-sigiled 变量没有像 @
和 %
这样的特殊分配处理 -符号变量。 (如果你做 .WHICH
或 .WHERE
你可以看到它们指向内存中的同一个地方)。
@user0721090601 已经给出了订阅的答案。对方法做同样的事情稍微复杂一些。幸运的是,生态系统中有一个模块可以让您更轻松地做到这一点:Method::Also。这允许你说:
use Method::Also;
# ...
method foo() is also<bar bazzy> {
然后你也可以调用.bar
和.bazzy
方法,得到与调用.foo
方法相同的结果。