类方法语法中的 Raku 中缀运算符
Raku infix operator in method-like syntax
在 Raku 中,infix 运算符可以像函数一样使用,例如:
1 + 2 ; # 3
infix:<+>(1, 2) ; # 3
[+] 1, 2 ; # 3
Prefix 运算符可以与 method-like 语法一起使用 (methodop):
-1 ; # -1
1.:<-> ; # -1
所以,(相当学术的)问题是,infix 运算符是否也可以用于 method 之类的方式,例如 1.:<+>(2)
(这是错误的)?
松散相关的备选方案
柯里化
(1 + *)(2) ; # 3
…这是函数(某种)定义和调用,不是方法调用,也不是类似方法的语法。
自定义方法
my method plus(Int $b --> Int){
return self + $b;
}
1.&plus(2) ; # 3
... 但是 +
name 不能使用,这也不是没有附加函数定义的直接操作符用法。
您可以使用
1.&infix:<+>(2)
1.&[+](2)
1.&(*+*)(2)
1.&{$^a +$^b}(2)
在 Raku 中,infix 运算符可以像函数一样使用,例如:
1 + 2 ; # 3
infix:<+>(1, 2) ; # 3
[+] 1, 2 ; # 3
Prefix 运算符可以与 method-like 语法一起使用 (methodop):
-1 ; # -1
1.:<-> ; # -1
所以,(相当学术的)问题是,infix 运算符是否也可以用于 method 之类的方式,例如 1.:<+>(2)
(这是错误的)?
松散相关的备选方案
柯里化
(1 + *)(2) ; # 3
…这是函数(某种)定义和调用,不是方法调用,也不是类似方法的语法。
自定义方法
my method plus(Int $b --> Int){
return self + $b;
}
1.&plus(2) ; # 3
... 但是 +
name 不能使用,这也不是没有附加函数定义的直接操作符用法。
您可以使用
1.&infix:<+>(2)
1.&[+](2)
1.&(*+*)(2)
1.&{$^a +$^b}(2)