Scala中有Left,Right两个类,继承于Either,主要用途是表示两个可能不同的类型(它们之间没有交集),Left主要是表示Failure,Right表示有,跟Some类型有点类似。
案例:
object EitherLeftRightExample extends App {
/**
* A simple method to demonstrate how to declare that a method returns an Either,
* and code that returns a Left or Right.
*/
def divideXByY(x: Int, y: Int): Either[String, Int] = {
if (y == 0) Left("Dude, can't divide by 0")
else Right(x / y)
}
// a few different ways to use Either, Left, and Right
println(divideXByY(1, 0))
println(divideXByY(1, 1))
divideXByY(1, 0) match {
case Left(s) => println("Answer: " + s)
case Right(i) => println("Answer: " + i)
}
divideXByY(1, 1) match {
case Left(s) => println("Answer: " + s)
case Right(i) => println("Answer: " + i)
//Left(Dude, can't divide by 0)
//Right(1)
//Answer: Dude, can't divide by 0
//Answer: 1
}
}
分析:调用divideXByY方法,返回的是Either[String, Int],左边的String是 Left() 内部包含的信息。
右边的Int是 Right() 内部包含的信息。