有没有办法对案例类的集合进行约束。 就我而言,我想确保集合中的所有元素的第一个属性都具有相同的值。
下面是一个代码示例来表达我的意思
case class In[T](values : Set[T])
trait A
case object A1 extends A
case object A2 extends A
case class Element(k: A, v: String)
In(Set(Element(A1, "xxx"), Element(A1, "xxx"))) // should compile
In(Set(Element(A1, "xxx"), Element(A2, "xxx"))) // should not compile
最佳答案
您可以接受这个解决方案吗?
case class In[T](values : Set[T])
trait A
case object A1 extends A
case object A2 extends A
case class Element[T <: A](k: T, v: String)
In(Set[Element[A1.type]](Element(A1, "xxx"), Element(A1, "xxx"))) // should compile
In(Set[Element[A1.type]](Element(A1, "xxx"), Element(A2, "xxx"))) // should not compile
关于scala - 如何修复 Scala 中案例类集合的约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35034065/