scala Option Try Either
所属分类 scala
浏览量 662
Option null问题 Some返回有效数据,None 返回空值
Try 异常问题
Either 返回值不确定(返回两个值的其中一个) Left Right
一般 Left 包含错误或无效值, Right包含正确值
不推荐 使用 Either
Option Try 数据容器 ,类似集合
有 map filter flatten flatMap foreach collect 等方法
get getOrElse
Try toOption 转成 Option
trait Future[+T] extends Awaitable[T] {
def onComplete[U](f: Try[T] => U)(implicit executor: ExecutionContext): Unit
f – the function to be executed when this Future completes
Try[T]类似Option[T],success 包含T值,否则包含一个Throwable exception
相当于Either[Throwable, T]
def toInt(str:String):Option[Int] = {
try{
Some(str.toInt)
}catch{
case e:Throwable => None
}
}
val list = List("1","a","2")
list.map(toInt)
// List[Option[Int]] = List(Some(1), None, Some(2))
list.map(toInt).flatten
// List[Int] = List(1, 2)
list.flatMap(toInt)
// List[Int] = List(1, 2)
list.map(toInt).collect{case Some(i) => i}
// List[Int] = List(1, 2)
注意 collect 后面用 大括号 不能用 小括号
Try("1".toInt)
val res10: scala.util.Try[Int] = Success(1)
Try("a".toInt)
val res11: scala.util.Try[Int] = Failure(java.lang.NumberFormatException: For input string: "a")
Try("1".toInt).toOption
val res13: Option[Int] = Some(1)
Try{"1".toInt}.toOption
val res14: Option[Int] = Some(1)
import scala.util.Try
def toIntUseTry(str:String):Option[Int] = {
Try{str.toInt}.toOption
}
toIntUseTry("1")
toIntUseTry("a")
list.flatMap(toIntUseTry)
import scala.util.{Try,Success,Failure}
def toIntUseTry2(str:String):Option[Int] = {
Try{str.toInt} match{
case Success(i) => Some(i)
case Failure(e) => None
}
}
上一篇
下一篇
idea debug 技巧
Reactive Programming
sbt 创建运行 Scala play 项目
scala try future 例子
scala Play框架 依赖注入 guice 使用说明
sbt自定义任务