scala - 如何修复 Scala 中案例类集合的约束

标签 scala types

有没有办法对案例类的集合进行约束。 就我而言,我想确保集合中的所有元素的第一个属性都具有相同的值。

下面是一个代码示例来表达我的意思

  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/

相关文章:

Scala 转换为变量类型

Scala - 来自 Future 的批量流

scala - sbt 排除 'exclude' 的工件

基于对象类型的WPF触发器

haskell - 值构造器的别名

scala - 如何优化 spark 函数以将 double 值舍入为 2 位小数?

java - Scala/Gradle 的 build.gradle 中包含什么

ios - Swift 变量约束

scala - 并非在所有情况下都强制执行类型别名参数边界

go - 设置整个const block 的类型