以下是代码:
trait MacApp {
def dockerIcon_=(s: String) = println("setting docker icon...")
}
object Main extends App with MacApp {
dockerIcon = "apple"
}
scalac
抱怨:
Main.scala:6: error: not found: value dockerIcon
dockerIcon = "apple"
^
one error found
我看到scala-swing库使用_ =很多,例如https://github.com/scala/scala-swing/blob/2.0.x/src/main/scala/scala/swing/Label.scala#L28
谢谢!
答案 0 :(得分:7)
你需要getter和setter:
scala> :pa
// Entering paste mode (ctrl-D to finish)
trait MacApp {
def dockerIcon_=(s: String) = println("setting docker icon...")
def dockerIcon = 42
}
object Main extends App with MacApp {
dockerIcon = "apple"
}
// Exiting paste mode, now interpreting.
defined trait MacApp
defined object Main
scala> Main main null
setting docker icon...
http://www.scala-lang.org/files/archive/spec/2.11/06-expressions.html#assignments
您对这对成员的期望早在以下时间确定:
答案 1 :(得分:-1)
您是否正在尝试分配功能?我不认为_=
Swing代码使用的是运算符,我认为它只是一个奇怪的名字......可能是因为目前让我无法理解的一些模糊的Java兼容性原因。
但是def
定义了一个函数,而不是一个值,因此你无法分配它;你必须打电话给它。看看这个控制台片段:
scala> def text_=(s: String) = s + "foo"
text_$eq: (s: String)String
scala> text_=("bar")
res3: String = barfoo