斯卡拉 |选项
Scala 中的Option指的是指定类型的单个元素或没有元素的载体。当一个方法返回一个甚至可以为 null 的值时,就会使用 Option,即定义的方法返回一个 Option 的实例,而不是返回单个对象或 null。
要点:
- 此处返回的 Option 实例可以是 Scala 中Some类或None类的实例,其中Some和None是Option类的子类。
- 当获得给定键的值时,就会生成Some类。
- 当未获得给定键的值时,将生成None类。
例子 :
// Scala program for Option
// Creating object
object option
{
// Main method
def main(args: Array[String])
{
// Creating a Map
val name = Map("Nidhi" -> "author",
"Geeta" -> "coder")
// Accessing keys of the map
val x = name.get("Nidhi")
val y = name.get("Rahul")
// Displays Some if the key is
// found else None
println(x)
println(y)
}
}
输出:
Some(author)
None
在这里,找到了值Nidhi的键,因此返回了Some ,但没有找到值Rahul的键,因此返回了None 。
采用可选值的不同方式
- 使用模式匹配:
例子 :
// Scala program for Option // with Pattern matching // Creating object object pattern { // Main method def main(args: Array[String]) { // Creating a Map val name = Map("Nidhi" -> "author", "Geeta" -> "coder") //Accessing keys of the map println(patrn(name.get("Nidhi"))) println(patrn(name.get("Rahul"))) } // Using Option with Pattern // matching def patrn(z: Option[String]) = z match { // for 'Some' class the key for // the given value is displayed case Some(s) => (s) // for 'None' class the below string // is displayed case None => ("key not found") } }
输出:author key not found
在这里,我们在 Scala 中使用了带有模式匹配的 Option。
- getOrElse() 方法:
此方法用于在存在时返回值或在不存在时返回默认值。在这里,对于Some类,返回一个值,对于None类,返回一个默认值。
例子:// Scala program of using // getOrElse method // Creating object object get { // Main method def main(args: Array[String]) { // Using Some class val some:Option[Int] = Some(15) // Using None class val none:Option[Int] = None // Applying getOrElse method val x = some.getOrElse(0) val y = none.getOrElse(17) // Displays the key in the // class Some println(x) // Displays default value println(y) } }
输出:15 17
这里,分配给None的默认值是 17,因此,它为None类返回。
- isEmpty() 方法:
此方法用于检查 Option 是否有值。
例子:// Scala program of using // isEmpty method // Creating object object check { // Main method def main(args: Array[String]) { // Using Some class val some:Option[Int] = Some(20) // Using None class val none:Option[Int] = None // Applying isEmpty method val x = some.isEmpty val y = none.isEmpty // Displays true if there // is a value else false println(x) println(y) } }
输出:false true
在这里, isEmpty对Some类返回 false 因为它是非空的,但对None返回 true 作为它的空。