码迷,mamicode.com
首页 > 其他好文 > 详细

初学scala1——Option

时间:2017-01-09 00:35:05      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:map   好的   容器   输入   tps   问题   match   array   style   

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

标签:map   好的   容器   输入   tps   问题   match   array   style   

原文地址:http://www.cnblogs.com/lybo/p/6263212.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!