📜  斯卡拉 | Null、null、Nil、Nothing、None 和 Unit

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

斯卡拉 | Null、null、Nil、Nothing、None 和 Unit

Scala 中的 Empty 值由NullnullNilNothingNoneUnit表示。这些空值的解释如下:

  • 空值:
    Objects、Strings等引用类型可以为null ,而Int、Double、Long等值类型不能为null ,Scala中的null类似于Java中的null
  • 空值:
    它是一个 Trait,它是每个引用类型的子集,但根本不是值类型的子类型,并且Null的单个实例是null 。可以为引用类型分配null但不能为值类型分配null
    例子 :
    // Scala program using Null and null
      
    // Creating object
    object GfG
    {
      
        // Main method
        def main(args: Array[String]) 
        {
            // Method that takes a parameter of type Null
            def usingnull(thing: Null): Unit = 
            { 
                println("GeeksForGeeks"); 
            }
      
            /*error: type mismatch;
      
            found   : java.lang.String("hey")
      
            required: Null*/
            //usingnull("hey")
      
            // passing null itself
            usingnull(null)
        }
    }
    

    输出 :

    GeeksForGeeks

    在这里,方法usingnull包含一个 Null 类型的参数,我们只能传递两个东西。 null 本身或 Null 类型的引用。当我们将字符串作为参数传递时,它不起作用并产生了错误。

  • 没有:
    Nothing也是 Trait,没有实例。它是每个不同类型的子集。此 Trait 的主要动机是为始终抛出异常的方法提供返回类型,即,通常甚至没有一次返回。它还有助于为Nil提供类型。
  • 单元:
    Unit is Scala 类似于Java中的void ,它用作函数的返回类型,当所述函数不返回任何内容时,它与函数一起使用。
    例子 :
    // Scala program using Unit type
      
    // Creating object
    object GfG
    {
      
        // Main method
        def main(args: Array[String]) 
        {
            // Method return type is unit
            def printNumber(num: (Int) => Unit) = 
            {
      
                num(1); 
                num(2); 
                num(3);
            }
              
            printNumber(println)
        }
    }
    

    输出 :

    1
    2
    3

    在这里,方法printNumber接受一个名为num的参数,其类型为(Int) => Unit 。这意味着 num 是一个包含单个 Int 类型参数的方法。方法printNumber返回 Unit 的类型,这意味着 num 不应该返回值。

  • 零:
    Nil被认为是一个列表,其中包含零个元素。 Nil的类型是 List[Nothing] ,如上所述, Nothing没有实例,我们可以有一个被确认为废弃的 List。
    例子:
    // Scala program to show that
    // Nil is an empty list
      
    // Creating object
    object GfG
    {
      
        // Main method
        def main(args: Array[String]) 
        {
      
            // Displays empty list
            println(Nil)
        }
    }
    

    输出 :

    List()

    因此,我们可以看到返回了一个空列表。

  • 没有任何:
    它是 Scala 的 Option 类的子类之一,用于避免将null分配给引用类型。让我们看一些例子。

    例子 :

    // Scala program to convert
    // None to empty list
      
    // Creating object
    object GfG
    {
      
        // Main method
        def main(args: Array[String]) 
        {
      
            // Displays empty list
            println(None.toList)
        }
    }
    

    输出 :

    List()

    在这里,返回一个空列表。

    例子 :

    // Scala program to test if
    // None is empty or not
      
    // Creating object
    object GfG
    {
      
        // Main method
        def main(args: Array[String]) 
        {
      
            // Displays true if empty
            // else false
            println(None.isEmpty)
        }
    }
    

    输出 :

    true

    因此,我们可以说None是空的,因为返回的是 true。

    例子 :

    // Scala program to convert None
    // to String
      
    // Creating object
    object GfG
    {
      
        // Main method
        def main(args: Array[String]) 
        {
      
            // Displays String
            println(None.toString)
        }
    }
    

    输出 :

    None

    因此,None 可以转换为字符串。

    例子 :

    // Scala program of utilizing
    // None with Scala's Option
      
    // Creating object
    object GfG
    {
      
        // Main method
        def main(args: Array[String]) 
        {
            // Applying None with 
            // Scala's Option
            val p: Option[String] = None
      
            // Displays output
            println(p)
        }
    }
    

    输出 :

    None

    有关此示例的更多信息,请参阅 Scala 的选项。