Scala中的一些语法含义是什么?

时间:2015-07-21 09:45:46

标签: scala

此代码中语法糖的含义和目的是什么?

def exp: Parser[Expr] = operands ~ binOp ~ exp ^^ {case  e1~o~e2=>BinaryOp(o,e1,e2)}

特别是,这些表达方式的含义是什么?

  • operands ~ binOp ~ exp ^^
  • e1~o~e2

2 个答案:

答案 0 :(得分:3)

  

operands~binOp~exp ^^ ...

scala中的运算符只是普通的方法调用:

operands ~ binOp ~ exp ^^ ...

相同
operands.~(binOp).~(exp).^^(...)

您可以查看~^^方法here的文档,或者您应该可以在IDE中单击它们。

  

案例e1~o~e2

这匹配一个名为~的案例类 - 许多双参数事物可以用这个"中缀表示法"在斯卡拉。它相当于:

case ~(e1, ~(o, e2))

(请参阅case classes上的文档)

答案 1 :(得分:1)

那些没有任何特殊含义 - 它们只是被称为~^^的方法。您需要查看您正在使用的任何库的文档/实现,以定义它们的用途。