0
votes

Comment transformer l'option [A] sur [String, B] dans Scala avec des chats?

Je crée des échantillons de petits codes lorsque vous souhaitez montrer comment fonctionne la bibliothèque des chats. Bien que je travaillais sur le dernier exemple, j'ai remarqué que cela pourrait probablement être plus élégant: xxx

Qu'est-ce qu'un moyen de réécrire l'extrait de code sur une forme plus concise à l'aide de la syntaxe des chats? < / p>


0 commentaires

3 Réponses :


1
votes

Vous n'avez pas besoin de créer un autre IO, car l'expression dans le résultat de rendement sera déjà enveloppée par IO par la compréhension de la compréhension.

def deleteWord(id: Int): IO[Either[String, Unit]] =
  for (removedWord <- IO(storage.remove(id)))
    yield removedWord.map(_=>()).toRight(s"Word with $id not found")


0 commentaires

0
votes

Peut-être que vous avez simplifié votre échantillon, mais les chats n'amélioreront pas une telle transformation xxx


0 commentaires

1
votes

Une des solutions que j'ai reçues dans Gitter Cats chat:

import cats.implicits._

override def deleteWord(id: Int): IO[Either[String, Unit]] =
  for {
    removedWord <- IO(storage.remove(id))
    result <- IO(removedWord.toRight(s"Word with $id not found").void)
  } yield result


0 commentaires