CSplit 和 MapCanvT 都是 Scala Swing 组件的子类型。所以 CanvNode 类型始终是 Component 的子类型。我还没有掌握 Scala 集合的功能性东西,比如折叠。有没有办法减少这段代码(除了把匹配放在一个函数中)并摆脱那些匹配?
type CanvNode = Either[CSplit, MapCanvT]
class CSplit(var s1: CanvNode, var s2: CanvNode) extends SplitPane
{
topComponent = s1 match { case Left (s) => s; case Right (s) => s}
bottomComponent = s2 match { case Left (s) => s; case Right (s) => s}
以上编译。理想情况下,我会写:
type CanvNode = Either[CSplit, MapCanvT]
class CSplit(var s1: CanvNode, var s2: CanvNode) extends SplitPane
{
topComponent = s1
bottomComponent = s2
但这不会编译。