美文网首页
scala学习笔记四——null,None,Some,Optio

scala学习笔记四——null,None,Some,Optio

作者: 对方正在输出_ace | 来源:发表于2019-09-29 12:43 被阅读0次

    1.null

    null代表无值,但是这种无值经常会发生各种bug。

    2.Option,Some,None

    Option是一个抽象类,它含有两个具体的子类,分别是Some和None。其中,Some代表有值,None代表无值。
    使用Option的好处是,它代表可能有值,也可能无值,但是返回None会相对更安全一些。
    Scala 推荐使用Option类型。

        val a=Map("1"->"hello","2"->"scala")
        println(a.get("1"))
        println(a.get("3"))
    

    a.get("1")返回的是一个some类型。
    a.get("3")返回的是一个None类型。

    Some(hello)
    None
    

    再来和Null对比一下安全性。

        println(None.toString)
        println(null.toString)
    

    第一个程序可以正常运行,第二个则会抛出NullPointerException的异常。
    当返回的是Optopn类型时,我们要获得具体的值,可以继续使用get方法,但是此时为None值时,会有异常。

        val a=Map("1"->"hello","2"->"scala")
        println(a.get("1").get)
        println(a.get("3").get)
    

    执行结果为:

    hello
    Exception in thread "main" java.util.NoSuchElementException: None.get
    ...
    

    所以在使用的时候可以用更安全的方式getOElse来获取Option对象的值。

        val a=Map("1"->"hello","2"->"scala")
        println(a.get("1").getOrElse("none"))
        println(a.get("3").getOrElse("none"))
    

    执行结果为:

    hello
    none
    

    3.Nothing

    Nothing是其他类型的子类型。Nothing没有实例。Nothing和null的区别时,Nothing是任何其他类型的子类型,而null是所有引用类型的子类。

    4.Nil

    Nil是一个空的List.可以定义为List[Nothing]。

        val b:List[Nothing]=List()
        println(Nil)
        println(b==Nil)
    

    结果为:

    List()
    true
    

    5.Unit

    Unit表示无值。常用在方法里,表示没有返回值。

    6.Any

    Any是所有的类的超类。不知道数据类型时,常被推断为Any。AnyRef是Any的引用类型的基类。

    相关文章

      网友评论

          本文标题:scala学习笔记四——null,None,Some,Optio

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