转换设置为 cats.data.NonEmptySet?

Convert Set to cats.data.NonEmptySet?

猫中是否有针对标准 Set 的扩展方法,可将其转换为 Option[cats.data.NonEmptySet]

不适用于 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)。