- Null是一个trait(特质),是所以引用类型AnyRef的一个子类型,<mark style="box-sizing: border-box;">null是Null唯一的实例</mark>。(list、option、yourclass等)
- Nothing也是一个trait(特质),是所有类型Any(包括值类型和引用类型)的子类型,<mark style="box-sizing: border-box;">它不在有子类型</mark>,它也没有实例,实际上为了一个方法抛出异常,通常会设置一个默认返回类型。基本类型、Unit等
//所以:
val cc:String=null//可(因为string是list类型)
val cc_int:Int=null//不可,Null是AnyRef的一个子类型,而基本类型是AnyVal的自类型
Nothing这个类一般用于指示程序返回非正常结果,利用Nothing作为返回值可以增加程序的灵活性。例如:
def error(msg:String):Nothing={
throw new RuntimeException(msg)
}
def divide(x: Int, y: Int): Int =
if (y != 0) x / y
else error("can't divide by zero")
- Nil代表一个List空类型,等同List[Nothing]
- None是Option monad的空标识
网友评论