0

我正在学习 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

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

4

1 回答 1

2

您应该在名称中的字母和标点字符之间放置下划线。add3To_:,不是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
于 2013-05-22T11:36:48.917 回答