我正在尝试向Symbol类添加更新方法。
class SymbolUpdate(s: Symbol) {
def update(i: Int) = s.name + i
}
implicit def toSymbolUpdate(s: Symbol) = new SymbolUpdate(s)
但是当我运行代码时,我得到以下内容
scala> 's = 1
<console>:327: error: value update is not a member of object Symbol
's = 1
^
但是当我直接调用该方法时它确实有用。
scala> 's.update(1)
res41: java.lang.String = s1
或者如果我显式地放置一个空参数数组。
scala> 's() = 1
res42: java.lang.String = s1
不确定我的代码有什么问题?
答案 0 :(得分:5)
在'='运算符左侧带有函数应用程序的赋值
f(args) = e
被解释为f.update(args, e)
,即调用update
函数 由f
定义。
如果您阅读Programming in Scala中的相应部分,那就特别清楚了:
类似地,当对已应用括号和一个或多个参数的变量进行赋值时,编译器会将其转换为对括号中的参数以及对象的更新方法的调用。等号右边。
我认为这意味着需要括号。