首页  

scala Option Try Either     所属分类 scala 浏览量 652
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自定义任务