将Set转换为cats.data.NonEmptySet吗?

时间:2019-02-01 14:41:06

标签: scala scala-cats

在cats中是否存在将标准Set转换为Option[cats.data.NonEmptySet]的扩展方法?

1 个答案:

答案 0 :(得分:5)

不是scala.collection.immutable.Set,而是SortedSet

scala> import cats.syntax.set._
import cats.syntax.set._

scala> import scala.collection.immutable.SortedSet
import scala.collection.immutable.SortedSet

scala> SortedSet(1, 2, 3).toNes
res0: Option[cats.data.NonEmptySet[Int]] = Some(TreeSet(1, 2, 3))

您当然可以转换普通的Set

scala> Set(1, 2, 3).to[SortedSet].toNes
res1: Option[cats.data.NonEmptySet[Int]] = Some(TreeSet(1, 2, 3))

Cats的NonEmptySet不是建立在Set上的(并且Cats不提供Set的语法),因为Set依赖于通用等式来确定什么被视为唯一性为其元素。另一方面,SortedSet需要一个scala.math.Ordering实例,这使其更符合Cats中遵循的设计原则(有关更多讨论,请参见this issue)。