📜  斯卡拉 |选项

📅  最后修改于: 2022-05-13 01:55:35.830000             🧑  作者: Mango

斯卡拉 |选项

Scala 中的Option指的是指定类型的单个元素或没有元素的载体。当一个方法返回一个甚至可以为 null 的值时,就会使用 Option,即定义的方法返回一个 Option 的实例,而不是返回单个对象或 null。

要点:

  • 此处返回的 Option 实例可以是 Scala 中Some类或None类的实例,其中SomeNoneOption类的子类。
  • 当获得给定键的值时,就会生成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
    

    在这里, isEmptySome类返回 false 因为它是非空的,但对None返回 true 作为它的空。