首页 > 代码库 > 初学scala1——Option
初学scala1——Option
Scala的Option[T]是容器对于给定的类型的零个或一个元件。Option[T]可完美替代Java中的null,可以是Some[T]或者None。
例如,Scala Map的get方法输出即为Option[T]。
def main(args: Array[String]): Unit = { val capitals = Map("France" -> "Paris", "China" -> "Beijing") println(capitals.get( "France" ))//Some(Paris) println(capitals.get( "France" ).get)//Paris println(capitals.get( "India" ))//None }
使用Option最常用的方法是模式匹配。例如:
def m(k:Int) = { Map((1,100),(2,200),(3,300)) get(k) match { case Some(v) => k + ": " + v case None => "not found" } } def main(args : Array[String]) : Unit = { println(m(1)) // 100 println(m(2)) // 200 println(m(3)) // 300 println(m(4)) // "not found" println(m(-1)) // "not found" }
还有一个很重要的就是getOrElse方法,常见使用方法如下:
def main(args: Array[String]): Unit = { val default=9999 def find(map:Map[Int,Int]):Int = map.get(3) getOrElse default println(find(Map(1->100,2->200))) // 9999 println(find(Map(1->100,3->300))) // 300 }
总结:
让函数永远不要返回null值,如果输入有问题或者抛异常,返回Option[T]。
尽可能地不要浪费代码去检测输入,包装成Option[T]来统一处理。
更好的输入校验,可以使用如下scopt:
https://github.com/scopt/scopt
初学scala1——Option
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。