斯卡拉 | Null、null、Nil、Nothing、None 和 Unit
Scala 中的 Empty 值由Null 、 null 、 Nil 、 Nothing 、 None和Unit表示。这些空值的解释如下:
- 空值:
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 的选项。