scala赋值运算符_ =不在特征中工作

dra*_*raw 1 scala

这是代码:

trait MacApp {
    def dockerIcon_=(s: String) = println("setting docker icon...")
}

object Main extends App with MacApp {
    dockerIcon = "apple"
}
Run Code Online (Sandbox Code Playgroud)

在scalac抱怨这一点:

Main.scala:6: error: not found: value dockerIcon
    dockerIcon = "apple"
        ^
one error found
Run Code Online (Sandbox Code Playgroud)

我看到scala-swing库使用_ =很多,例如,https://github.com/scala/scala-swing/blob/2.0.x/src/main/scala/scala/swing/Label.scala#L28

谢谢!

som*_*ytt 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...
Run Code Online (Sandbox Code Playgroud)

http://www.scala-lang.org/files/archive/spec/2.11/06-expressions.html#assignments

您对这对成员的期望是在早些时候建立的:

http://www.scala-lang.org/files/archive/spec/2.11/04-basic-declarations-and-definitions.html#variable-declarations-and-definitions