1

在 scala-swing 中,我可以编写以下简单代码:

import scala.swing._

object HelloWorld2 extends SimpleSwingApplication {
  val top = new MainFrame()
  top.title = "Hello, World!"
  top.contents = new Button("a")
}

它工作正常,但根据文档contentsin的类型MainFrameSeq[Component],而 Button 的类型是Button。那为什么我可以写

top.contents = new Button("a")

没有错误?

4

1 回答 1

0

根据 API文档,请注意以下两个方法签名

def contents: Seq[Component]
def contents_=(c: Component): Unit

赋值语法

top.contents = new Button("a")

实际上利用了 mutator_=方法

def contents_=(c: Component): Unit

正如访问器/突变器所解释的那样

对于 mutators,方法的名称应该是属性的名称加上“_=”。只要在封闭类型上定义了具有该特定属性名称的相应访问器,此约定将启用反映分配的调用点突变语法。

于 2020-08-09T22:31:28.477 回答