scala:简单接触Scala底层类型

  在图释11.1类型层级底部你看到了两个类scala.Null和Scala.Nothing它们是用统方式处理某些Scala面向对象类型系统“边界情况”特殊类型

  类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正如需要那样

Tags:  scalajava scala语言 netbeansscala scala

延伸阅读

最新评论

发表评论