我正在学习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
也许(我很确定)我犯了一个愚蠢的错误!但我没有看到它。
答案 0 :(得分:2)
您应在名称中的字母和标点字符之间放置underscore。 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