我有以下课程
A
现在我想创建一个像这样的类
B
但问题是我想限制为val s = Seq[Int]()
val c = Cllction(s) // should be compile error
或Play()
。在Scala中可以这样做吗?我的意思是,例如,如果我尝试这样创建:
def Play(self, master)
有可能吗?
答案 0 :(得分:4)
最直接的方法是使用公共基础(标记特征),然后将其用于类型绑定:
trait Col
case class A(vl: Int) extends Col
case class B(name: String) extends Col
case class Cllction[T <: Col](objs: Seq[T])
如果您无法修改A
和B
,其他解决方案将是联合类型,但这需要更复杂的代码或使用库。见How to define “type disjunction” (union types)?