Преобразовать Установить в cats.data.NonEmptySet? - PullRequest
0 голосов
/ 01 февраля 2019

Есть ли у кошек метод расширения для стандарта Set, который преобразует его в Option[cats.data.NonEmptySet]?

1 Ответ

0 голосов
/ 01 февраля 2019

Не для 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))

Кошачьи NonEmptySet isn 't построен на Set (а Cats не предоставляет синтаксис для Set), потому что Set полагается на универсальное равенство для определения того, что считается уникальностью для его элементов.SortedSet, с другой стороны, требуется экземпляр scala.math.Ordering, что делает его более согласованным с принципами проектирования, применяемыми в Cats (см., Например, этот вопрос для дальнейшего обсуждения).

...