【问题标题】:scala infix function with additional parameters带有附加参数的scala中缀函数
【发布时间】:2021-07-23 07:35:40
【问题描述】:

有没有办法创建一个可以在 scala 中以中缀表示法传递附加参数的函数?

类似这样的:a op(additionalParam) b

编辑:我很确定这是不可能的。也许有人可以说服我?最后我只需要传递一个数字给op

【问题讨论】:

    标签: scala


    【解决方案1】:

    不,language specification 有这个:

    InfixExpr       ::=  PrefixExpr
                      |  InfixExpr id [nl] InfixExpr
    PrefixExpr      ::=  [‘-’ | ‘+’ | ‘!’ | ‘~’] SimpleExpr
    

    所以中缀只适用于两个表达式之间的简单idid 是第一个表达式返回的对象的方法名称,该表达式采用与第二个表达式的类型兼容的参数。

    【讨论】:

    • 谢谢!我现在要做的是创建一个函数,它接受参数并返回一个函数,然后我可以使用中缀表示法
    【解决方案2】:

    我不这么认为,但你可能会这样做。

    class A {
      def op(b: B): C = new C
      def op(otherParam: OP): A = new A
    }
    
    import scala.language.postfixOps
    
    a op b //->C
    a op addedParam op b //->C
    

    只需将ABCOP 类型替换为更有意义的类型即可。

    【讨论】:

      猜你喜欢
      • 2013-01-24
      • 1970-01-01
      • 2022-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-29
      • 2019-02-10
      • 2018-10-11
      相关资源
      最近更新 更多