请告诉我如何在Raku中定义一个新操作符,例如,如何实现定义为以下内容的箭头操作符:
operator ▶ {my ($left, $right) = @_; $left->{$right}}
这很简单:
sub infix:<▶> ($left, $right) {
$left."$right"()
}
# Example:
class Foo {
method bar { "hello" }
}
my $a = Foo.new;
say $a ▶ 'bar'
# hello
sub infix: < >
定义新的中缀运算符(其他选项包括prefix
, postfix
, circumfix
, 和 postcircumfix
,后两个需要一个开头和结尾部分,如 <( )>
表示开放和关闭括号)。
($left, $right)
如其名称所示,处理左右两边的值。
要根据字符串调用方法,您可以使用结构." "()
,其中方法名称用引号括起来,后跟括号 - 即使没有参数。 在这种情况下,我们只插入基本内插的变量,虽然可能存在更复杂的操作。
▶
右侧的代码。Raku 编译器在编译时会拒绝它。我可以编辑问题,并计划这样做,但我想用这个评论记录一个相关的 SO 编辑概念。这是 Perl 代码。一旦答案被接受,可能适合添加[perl]
标签,以便寻找答案的搜索者能够找到它。如果需要让搜索/监视[perl]
标签的人关注它,那么现在添加它是有意义的。但事实并非如此,因此立即添加[perl]
标签是不明智的,因为它很可能会浪费他们的时间。 - raiph