为什么Scala-swing MainFrame的内容可以分配给Button?

时间:2019-09-26 02:22:28

标签: scala scala-swing

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

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

工作正常

但作为文档https://www.scala-lang.org/api/2.9.1/scala/swing/package.html

MainFrame中内容的类型是Seq [Component]

按钮的类型是按钮

那我为什么写

top.contents=new Button("a")

没有错误吗?谢谢!

1 个答案:

答案 0 :(得分:0)

请注意,根据API docs

,以下两个方法签名
def contents: Seq[Component]
def contents_=(c: Component): Unit

赋值语法

top.contents = new Button("a")

实际上使用了变数_=方法

def contents_=(c: Component): Unit

Accessors/Mutators

所述

对于mutator,方法的名称应为 附加“ _ =”的属性。只要有一个对应的访问器 该特定的属性名称是在封闭类型上定义的, 约定将启用呼叫站点突变语法,该语法可反映 分配。