cou*_*ech 3 swing scala yield-keyword
我想创建一个列表GridBagPanel.Constraints.我在scala编程书中看到它有一个很酷的for-yield结构,但我可能还没有理解它正常工作的方式,因为我的代码没有编译.这里是:
val d = for {
i <- 0 until 4
j <- 0 until 4
} yield {
c = new Constraints
c.gridx = j
c.gridy = i
}
Run Code Online (Sandbox Code Playgroud)
我想生成一个List[Constraints]并为每个约束设置不同的x,y值以便稍后,当我稍后添加组件时,它们将在网格中.
你只需要c在yield块的末尾返回以获得一个集合Constraints.要让它返回a List,请使用a List而不是a Range.像这样:
val d = for {
i <- List.range(0, 4)
j <- List.range(0, 4)
} yield {
c = new Constraints
c.gridx = j
c.gridy = i
c
}
Run Code Online (Sandbox Code Playgroud)
事实上,原始代码不会在Scala 2.7中达到您的预期,因为,范围(如Range)在非严格.您可以在Stack Overflow或Google上查找它,但缺点是每次查找元素时d,它都会创建一个新元素Constraint.Scala 2.8的此行为已更改.