scala Option,None和Some

option的出现是为了解决null存在各类歧义的状况。最多见的一种状况是假设咱们对一个map去值,咱们调用Map.get(“key”)方法,在java中若是咱们获得结果为null,可能表明这个”key”存在,可是对应的value为空,也可能表明这个”key”不存在于map中。所以在scala中有了option这个类来解决返回null的问题。 
  在Java 里,null 是一个关键字,不是一个对象,因此对它调用任何方法都是非法的。可是这对语言设计者来讲是一件使人疑惑的选择。为何要在程序员但愿返回一个对象的时候返 回一个关键字呢?为了让全部东西都是对象的目标更加一致,也为了遵循函数式编程的习惯,Scala 鼓励你在变量和函数返回值可能不会引用任何值的时候使用Option 类型。在没有值的时候,使用None。若是有值能够引用,就使用Some 来包含这个值。none和some是option的子类。java

val temp = Map(
  "a" -> "A",
  "b" -> "B",
  "c"->"C",
  "d"->"D",
"e"->null
)
println( "a: " + temp.get("a").get )
println( "b: " + temp.get("b").get )
println( "e: " + temp.get("e").get)
//会报Exception in thread "main" java.util.NoSuchElementException: None.get错
//println( "f: " + temp.get("f").get)
println( "f: " + temp.get("f").getOrElse("F"))

输出以下:程序员

a: A
b: B
e: null
f: F
相关文章
相关标签/搜索