在cats中是否存在将标准Set
转换为Option[cats.data.NonEmptySet]
的扩展方法?
答案 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)。