编写一个返回Nothing的scala方法

时间:2016-06-10 03:56:37

标签: scala

- >我们如何write a scala method的返回类型为Nothing

- >我们ever need to write such methods?有没有useful scenarios

2 个答案:

答案 0 :(得分:5)

您实际上无法返回Nothing类型的值,因为没有Nothing类型的值。因此,定义返回类型为Nothing的函数的唯一方法是永远不会返回。

一个例子是一个只能无限地递归调用自身的函数。另一个是总是抛出异常或者只是退出应用程序(sys.exit的返回类型是Nothing)。

答案 1 :(得分:3)

实际上,在通过抛出异常而永远不会返回或终止异常的函数中没有使用任何东西 例如:

scala> def funcReturnNothing : Nothing = throw new RuntimeException("runtime exception")
funcReturnNothing: Nothing

更多解释。 Scala中的函数在其返回类型中是共变量的,假设函数的返回类型为T,因此该函数只能返回T的子类型或{{1的类型并且T是所有其他类型的子类型(类型链中最低)因此,实际上您不能从中返回任何有用的内容,但抛出异常的类型Nothing可以返回。