在Java中,null是一个关键字,不是一个对象,当开发者希望返回一个空对象时,却返回了一个关键字,为了解决这个问题,Scala建议开发者返回值是空值时,使用Option类型,在Scala中null是Null的唯一对象,会引起异常,Option则可以避免。Option有两个子类型,Some和None(空值)
代码示例:
val person: Person = getPersonByIdOnDatabaseUnsafe(id = 4) // 如果没有id=4的person时,返回null对象
println(s"This person age is ${person.age}") //如果是null,抛出异常
val personOpt: Option[Person] = getPersonByIdOnDatabaseSafe(id = 4) // 如果没有id=4的person时,返回None类型
personOpt match {
case Some(p) => println(s"This person age is ${p.age}")
case None => println("There is no person with that id")
}
在Java中,null是一个关键字,不是一个对象,当开发者希望返回一个空对象时,却返回了一个关键字,为了解决这个问题,Scala建议开发者返回值是空值时,使用Option类型,在Scala中null是Null的唯一对象,会引起异常,Option则可以避免。Option有两个子类型,Some和None(空值)
代码示例:
val person: Person = getPersonByIdOnDatabaseUnsafe(id = 4) // 如果没有id=4的person时,返回null对象
println(s"This person age is ${person.age}") //如果是null,抛出异常
val personOpt: Option[Person] = getPersonByIdOnDatabaseSafe(id = 4) // 如果没有id=4的person时,返回None类型
personOpt match {
case Some(p) => println(s"This person age is ${p.age}")
case None => println("There is no person with that id")
}