美文网首页
Scala类型系统中Nil, Null, None, Nothi

Scala类型系统中Nil, Null, None, Nothi

作者: cclucc | 来源:发表于2019-11-15 19:47 被阅读0次

    https://img.haomeiwen.com/i1611719/320e9da035bb597d.png?imageMogr2/auto-orient/strip|imageView2/2/w/1000/format/webp

    1. Null是一个trait(特质),是所以引用类型AnyRef的一个子类型,<mark style="box-sizing: border-box;">null是Null唯一的实例</mark>。(list、option、yourclass等)
    2. 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")
    
    
    1. Nil代表一个List空类型,等同List[Nothing]
    2. None是Option monad的空标识

    相关文章

      网友评论

          本文标题:Scala类型系统中Nil, Null, None, Nothi

          本文链接:https://www.haomeiwen.com/subject/qinkuctx.html