Scala类型约束
我有以下课程Scala类型约束,scala,class,Scala,Class,我有以下课程 case class A(vl: Int) case class B(name: String) 现在我想创建一个这样的类 case class Cllction[T](objs: Seq[T]) 但问题是我想限制为只有A或B。在Scala中可以这样做吗?我的意思是,例如,如果我尝试这样创建: val s = Seq[Int]() val c = Cllction(s) // should be compile error 有可能吗?最简单的方法是使用公共基(标记特征),然后
case class A(vl: Int)
case class B(name: String)
现在我想创建一个这样的类
case class Cllction[T](objs: Seq[T])
但问题是我想限制为只有A
或B
。在Scala中可以这样做吗?我的意思是,例如,如果我尝试这样创建:
val s = Seq[Int]()
val c = Cllction(s) // should be compile error
有可能吗?最简单的方法是使用公共基(标记特征),然后将其用于类型绑定:
trait Col
case class A(vl: Int) extends Col
case class B(name: String) extends Col
case class Cllction[T <: Col](objs: Seq[T])
trait Col
案例类别A(vl:Int)扩展了Col
案例类别B(名称:字符串)扩展了Col
case class Cllction[T最直接的方法是使用一个公共基(标记特征),然后将其用于类型绑定:
trait Col
case class A(vl: Int) extends Col
case class B(name: String) extends Col
case class Cllction[T <: Col](objs: Seq[T])
trait Col
案例类别A(vl:Int)扩展了Col
案例类别B(名称:字符串)扩展了Col
案例类Cllction[T注意,在这种情况下,您也可以使用Cllction[Col]
而不是Cllction[A]
或Cllction[B]
。链接问题的顶部答案没有这个问题。注意,在这种情况下,您也可以使用Cllction[Col]
而不是Cllction[A]
或Cllction[B]
。链接问题的顶部答案没有此问题。