刚接触Scala时就很奇怪, 为什么Java已经有null了,却偏偏还要弄出个None 后来依然我行我素在Scala里使用null, 结果就是经常被NullPointerException折磨得阴魂不散...于是终于领悟. WHY? 举个例子: 假设有一个简单的对象A, A类里有2个Int属性, a和b case class A(val a : Int, val b : Int) 然后有这么一个map val map1 = Map(1 -> A(111, 1111), 2 -> A(222,…
Alternatives Use null as a last resort. As already mentioned, Option replaces most usages of null. If you using null to implement deferred initialisation of a field with some expensive calculation, you should use a lazy val. Canonical initialisation…
object CollectionDemo8 { def main(args: Array[String]): Unit = { //Option集合的使用,可以用来安全的判断null或非null,放心使用,不会抛出空指针异常 val s: String = "abcd" val sp = Option(s) println(sp.isDefined) println(sp.isEmpty) if (sp == Some("abcd")) { println(&qu…
转载自Jason DingGitCafe博客主页(http://jasonding1354.gitcafe.io/)Github博客主页(http://jasonding1354.github.io/)CSDN博客(http://blog.csdn.net/jasonding1354)简书主页(http://www.jianshu.com/users/2bd9b48f6ea8/latest_articles) 避免null使用 大多数语言都有一个特殊的关键字或者对象来表示一个对象引用的是“无”,…
避免null使用 大多数语言都有一个特殊的关键字或者对象来表示一个对象引用的是"无",在Java,它是null.在Java 里,null 是一个关键字,不是一个对象,所以对它调用不论什么方法都是非法的. 可是这对语言设计者来说是一件令人疑惑的选择. 为什么要在程序猿希望返回一个对象的时候返回一个关键字呢? Scala的Option类型 为了让全部东西都是对象的目标更加一致,也为了遵循函数式编程的习惯.Scala鼓舞你在变量和函数返回值可能不会引用不论什么值的时候使用Option类型.…
Scala Option Scala Option类型用来表示一个值是可选的(有值或无值) Option[T] 是一个类型为 T 的可选值的容器: 如果值存在, Option[T] 就是一个 Some[T] 如果不存在, Option[T] 就是对象 None Option.orNull 参数:没有(当属性用) 返回:如果Option不为None返回Some的值否则返回null 例一:返回Some的值 scala> val v = Some("Hello Option") v:…
相对于java的类型系统,scala无疑要复杂的多!也正是这复杂多变的类型系统才让OOP和FP完美的融合在了一起! Nothing: 如果直接在scala-library中搜索Nothing的话是找不到了,只能发现一个Nothing$的类(后面再说Nothing$和Nothing的关系).要想看到Nothing.scala的源码需要去github上的scala源码中查找Nothing源码 可以看到在Nothing.scala中只是定义了一个sealed trait: package scala…
转载自: Scala 初学者指南, 这里有一系列很棒的文章 类型 Option 可能你已经见过它在 Map API 中的使用:在实现自己的提取器时,我们也用过它, 然而,它还需要更多的解释. 你可能会想知道它到底解决什么问题,为什么用它来处理缺失值要比其他方法好, 而且可能你还不知道该怎么在你的代码中使用它. 这一章的目的就是消除这些问号,并教授你作为一个新手所应该了解的 Option 知识. Scala 语言中包含一个标准类型 Option[A] 类型, Option[A] 是一个类型为 A…
转载:http://www.jianshu.com/p/95896d06a94d 1.option类型避免对象是空值,造成空指针异常. 2.None对象表示null,在没有对象返回时使用,some在有对象值时使用. 避免null使用 大多数语言都有一个特殊的关键字或者对象来表示一个对象引用的是“无”,在Java,它是null.在Java 里,null 是一个关键字,不是一个对象,所以对它调用任何方法都是非法的.但是这对语言设计者来说是一件令人疑惑的选择.为什么要在程序员希望返回一个对象的时候返回…
避免null使用 大多数语言都有一个特殊的关键字或者对象来表示一个对象引用的是“无”,在Java,它是null.在Java 里,null 是一个关键字,不是一个对象,所以对它调用任何方法都是非法的.但是这对语言设计者来说是一件令人疑惑的选择.为什么要在程序员希望返回一个对象的时候返回一个关键字呢? Scala的Option类型 为了让所有东西都是对象的目标更加一致,也为了遵循函数式编程的习惯,Scala鼓励你在变量和函数返回值可能不会引用任何值的时候使用Option类型.在没有值的时候,使用No…