【问题标题】:Raku infix operator in method-like syntax类似方法的语法中的 Raku 中缀运算符
【发布时间】:2021-09-24 16:26:52
【问题描述】:

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

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

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

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

所以,(相当学术的)问题是,中缀运算符也可以以方法的方式使用吗,例如1.:&lt;+&gt;(2)(这是错误的)?

柯里化

(1 + *)(2) ;     # 3

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

自定义方法

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

1.&plus(2) ;     # 3

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

【问题讨论】:

    标签: methods raku infix-operator


    【解决方案1】:

    你可以使用

    1.&infix:<+>(2)
    1.&[+](2)
    
    1.&(*+*)(2)
    1.&{$^a +$^b}(2)
    

    【讨论】:

    • 精彩又合乎逻辑,我没够坐立不安
    • ... 看看 ma,没有括号:1.&amp;[+]: 2
    • s/fidget/fiddle/
    猜你喜欢
    • 2012-01-25
    • 1970-01-01
    • 2020-05-19
    • 2020-10-18
    • 2020-12-07
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 2017-04-14
    相关资源
    最近更新 更多