- >我们如何write a scala method
的返回类型为Nothing
?
- >我们ever need to write such methods
?有没有useful scenarios
?
答案 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
可以返回。