Ram*_*hra 0 syntax scala literals
object solution extends App {
'n = 5
}
Run Code Online (Sandbox Code Playgroud)
它给出了编译时错误:值更新不是对象符号println('n ='n)的成员,这是可以理解的.因为文字是源代码中的固定值.但上述语法有效的原因是什么?
语法有效的原因是......好吧......因为它是:
implicit class UpdateableSymbol(val s: Symbol.type) extends AnyVal {
def update[A](s: String, v: A) = println(s"`Symbol.update` called with s = $s and v = $v")
}
'n = 5
// `Symbol.update` called with s = n and v = 5
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,语法完全没有问题,为什么它应该无效?错误消息告诉您问题所在:您正在调用Symbol.update但不存在.丢失的方法不是语法错误,它是语义错误.
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |