类似方法语法中的 Raku 中缀运算符 松散相关的替代方案

问题描述

在 Raku 中,中缀 运算符可以像函数一样使用,例如:

1 + 2 ;           # 3
infix:<+>(1,2) ; # 3
[+] 1,2 ;        # 3

前缀 运算符可与类似方法 的语法 (methodop) 一起使用:

-1 ;             # -1
1.:<-> ;         # -1

所以,(相当学术的)问题是,中缀 运算符是否也可以以类似 method 的方式使用,例如 1.:<+>(2)(这是错误的)?

咖喱

(1 + *)(2) ;     # 3

……那是函数(某种)定义和调用,不是方法调用,也不是类似方法的语法。

自定义方法

my method plus(Int $b --> Int){
  return self + $b;
}

1.&plus(2) ;     # 3

...但是不能使用 + 名称,这也不是没有附加函数定义的直接操作符用法。

解决方法

你可以使用

1.&infix:<+>(2)
1.&[+](2)

1.&(*+*)(2)
1.&{$^a +$^b}(2)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...