\/

  • ソースコード
  • scaladoc
  • 記号のクラス名でとっつきにくそうですが、かなり多く使われている、とても便利なクラスです
  • 読み方はDisjunctionあるいはEitherです
  • 数学の論理和 ∨ の記号由来です
  • \/ 自体はsealed abstract classであり、\/--\/というサブクラスが存在する
  • 右に-がくっついているのがRight、左に-がくっついているのがLeft
import scalaz._

val a: Int \/ String = \/-("foo")  // rightを生成
// a: Int \/ String = \/-("foo")
val b: \/[Int, String] = a // 型は中置記法で書かれることが多いが、中置記法を使わなくても書ける
// b: Int \/ String = \/-("foo")
val c: Int \/ String  = \/.right("foo") // rightというメソッドもある
// c: Int \/ String = \/-("foo")
val d = a.map(_ + "bar") // rightをmapすると反映される
// d: Int \/ String = \/-("foobar")
val e: Int \/ String  = \/.left(42)
// e: Int \/ String = -\/(42)
e.map(_ + "bar") // leftをmapしても変わらない
// res0: Int \/ String = -\/(42)
e.leftMap(_ * 100) // leftの場合にmapするには、leftMapを使う
// res1: Int \/ String = -\/(4200)

results matching ""

    No results matching ""