是否可以在 Raku 中定义一个新的运算符并控制其优先级?
Is it possible to define a new operator in Raku and control its precedence?
考虑这个新运算符:
sub infix:<*++>(\num1, \num2) {
num1 * num2 + 1
}
say (2 + 1 *++ 3);
此代码打印:
10
但是,是否可以控制优先级?它的行为是这样的:
say (2 + (1 *++ 3))
无需使用括号
可以通过is tighter
sub infix:<*++> (\num1, \num2) is tighter(&[+]) {
num1 * num2 + 1
}
考虑这个新运算符:
sub infix:<*++>(\num1, \num2) {
num1 * num2 + 1
}
say (2 + 1 *++ 3);
此代码打印:
10
但是,是否可以控制优先级?它的行为是这样的:
say (2 + (1 *++ 3))
无需使用括号
可以通过is tighter
sub infix:<*++> (\num1, \num2) is tighter(&[+]) {
num1 * num2 + 1
}