我是Scala的初学者,并开始玩类型。
我想初始化一个对象D及其值" myList"这是List的类型。 List可以同时包含A类和B类元素。 A类和B类都扩展了C类.Val myList不是强制性的。
所以我写道:
class A extends C
class B extends C
class D(val myList : Option[List[T]] forSome { type T >: C } = None)
new D(Some(List(new A, new B)))
new D(Some(List(new A, new B)))
我的问题是,这是否是做这种事情的正确方法?此外,拥有可以是不同类型的值或更好地避免它的值是一种好习惯吗?感谢。
答案 0 :(得分:0)
只需将myList定义为List [C]
即可class A extends C
class B extends C
class D(val myList : Option[List[C]] = None)
new D(Some(List(new A, new B)))
new D(Some(List(new A, new B)))
没有Option []的更好版本:
class A extends C
class B extends C
class D(val myList : List[C] = List.empty[C])
new D(List(new A, new B))
new D(List(new A, new B))
案例类更好的版本:
case class A extends C
case class B extends C
case class D(myList : List[C] = List.empty[C])
D(List(A(), B()))
D(List(A(), B()))