转换设置为 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)。
猫中是否有针对标准 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)。