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

Mid*_*rse 5 scala scala-cats

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

Tra*_*own 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))
Run Code Online (Sandbox Code Playgroud)

您当然可以转换一个普通的Set

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

Cats的NonEmptySet构建不是基于Set(并且Cats不提供的语法Set),因为它Set依赖于通用相等性来确定什么才算为其元素的唯一性。SortedSet另一方面,需要一个scala.math.Ordering实例,这使其更符合Cats中遵循的设计原则(例如,请参阅此问题以获取更多讨论)。

  • 似乎“.to[SortedSet]”调用需要另一个导入。 (2认同)