Scala理解右关联操作数

时间:2013-05-22 11:24:49

标签: scala syntax operand

我正在学习scala(喜欢它!)但有一些我不明白的东西。 我通过方法名称以“:”结尾读取右关联操作数。容易理解,但我想定义我自己的右关联函数add3To:。

我有语法错误,不知道原因:

case class MyInt(x : Int) {
   def add3 = x+3

   def add3To:= x+3 // dont understand whats wrong here
}

val myInt = MyInt(4)
println(myInt add3)  // working 
println(add3To myInt)  // not working

也许(我很确定)我犯了一个愚蠢的错误!但我没有看到它。

1 个答案:

答案 0 :(得分:2)

您应在名称中的字母和标点字符之间放置underscoreadd3To_:,而非add3To:

方法应接受单个参数:addTo_:(i: Int)

scala> case class MyInt(x : Int) {
     |    def addTo_:(i: Int): Int = x+i
     | }
defined class MyInt

scala> val myInt = MyInt(4)
myInt: MyInt = MyInt(4)

scala> 3 addTo_: myInt
res0: Int = 7