Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala类型约束_Scala_Class - Fatal编程技术网

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]
。链接问题的顶部答案没有此问题。