Scala选项
**选项 **option****是一个包含一个值的容器,该值可以是两个不同值之一。
这两个值之一是" none",其他值可以是程序中有效的任何对象。
当接受从函数返回的值时可以使用Option,该函数可以在周期时间返回null,否则返回一些值。该选项类别返回两个实例:
-
当函数失败时,为空类的实例。
-
一个类的实例,当函数成功时。
这两个类都从option类继承。
语法:
使用option作为返回类型的函数的声明:
def function_name(arguments) : Option[data_type]
举例说明如何操作选项
object Demo {
def details(x: Option[String]) = x match {
case Some(s) => s
case None => "?"
}
def main(args: Array[String]) {
val student = Map("name" -> "Ram", "standard" -> "10")
println("show(student.get( \"name\")) : " + details(student.get( "name")) )
println("show(student.get( \"percentage\")) : " + details(student.get( "percentage")) )
}
}
输出结果
show(student.get( "name")) : Ram
show(student.get( "percentage")) : ?
Option vs NULL:哪个更好?
在Java编程中Option与NULL 进行比较。在Java中使用null,偶尔需要处理它。如果未处理,则可能给出NullPointerException。在scala中 使用**Option时,**不会发生此异常,这就是其用法更有效的原因。
Scala Options类的一些常用方法
方法 | 描述 |
---|---|
def get:A | 返回选项的值。 |
def isempty:Boolean | 没有值返回true,否则返回false。 |
def getOrElse(val) |
返回选项中某个值的值,如果没有则返回传递的值。 |
def foreach() |
如果值存在则求值,否则不做任何事情 |
def flatmap() |
返回一些选项值的函数值。如果该值不存在,则返回None。 |
def productElementName(n) |
返回基于0的索引中第n个元素。 |