对于Java,每个函数只能返回一个类型。比如 public Obj getObj(){}。有些时候就会让人产生误解,这个函数的返回值确保可用吗,返回值总是安全的吗?如果恰好你是调用第三方库,这就需要让开发者需要自己去验证这个函数是不是总是会返回安全值,或者这个函数在什么时候会返回null。

scala提供了一个非常优雅的类型Option。如果一个函数总是返回安全值那就可以这么定义
def safe():Obj={}
如果一个函数不一定返回安全值(也有可能返回null),那就可以这么定义
def notsure():Option(Obj)={}

Option(T) 声明某个值可能是T类型,也可能是空指针。这个类型更多的应该是一个警示作用

Option 有两个子类别,一个是 Some,一个是 None,
当Option(T)的值是 Some(T) 的时候,代表这个函式成功地给了你一个 String
如果他返回的是 None,则代表没有字符串可以给你。
var m=Map("a"->1,"b"->2)
var v=m.get("b")
v match {
  case Some(vv) => print("hit",vv) // 这里也是调用了Some类的unapply(提取器)函数
  case None => print(0)
}