Scala Null, null, Nil, Nothing, None, 和 Unit
Scala中的空值由Null , null , Nil , Nothing , None和Unit表示。这些空值的解释如下。
- null:
对象、字符串等引用类型可以为空,Int、Double、Long等值类型不能为空,Scala中的null类似于Java中的null。
-
Null:
它是一个特质,是每个参考类型的一个子集,但根本不是价值类型的一个子类型,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
在这里,使用Null的方法包括一个Null类型的参数,我们只能传递两种东西:Null本身或Null类型的引用。
- Nothing:
Nothing也是一个特质,它没有实例。它是每个不同类型的一个子集。这个Trait的主要动机是为那些持续抛出异常的方法提供一个返回类型,也就是说,通常不会有一次返回。它也有助于为Nil提供一个类型。 - Unit:
Unit在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)
}
}
输出 :
“`scala 1
2
3
<pre><code class=" line-numbers"><br />在这里,方法printNumber接受一个名为num的参数,其类型为**(Int) = > Unit **。这意味着num是一个由Int类型的单个参数组成的方法。方法printNumber的返回类型为Unit,这意味着num不应该返回一个值。
* Nil:
无被认为是一个列表,其中有零个元素。Nil的类型是List[Nothing],如上所述,Nothing没有实例,我们可以有一个被确认为荒废的List。
**示例:**
“`scala
// 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()
因此,我们可以看到返回的是一个空列表。
- None:
它是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()
这里,将返回一个空的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是空的,因为返回的是真。
示例 :
// 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
极客教程