类方法语法中的 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)