类Null是null类型引用;它是每个引用类(就是说每个继承自AnyRef类)子类Null不兼容值类型你不可比方说把null值赋给整数变量:
scala>val i: Int = null
< console>:4:error:typemismatch;
found:Null(null)
required:Int
类型Nothing在Scala类层级最底端;它是任何其它类型子类型然而根本没有这个类型任何值要个没有值类型有什么意思呢?7.4节中讨论过Nothing个用处是它标明了不正常终止例如Scala标准库中Predef对象有个error思路方法如下定义:
def error(message:String): Nothing = throw RuntimeException(message)
error返回类型是Nothing告诉用户思路方法不是正常返回(代的以抛出了异常)Nothing是任何其它类型子类你可以非常灵活使用像error这样思路方法例如:
def divide(x:Int, y:Int): Int =
(y != 0) x / y
error("can't divide by zero")
“那么”状态分支x / y类型为Int而“否则”()分支了error类型为NothingNothing是Int子类型整个状态语句类型是Int正如需要那样
最新评论