虚拟占位符

时间:2014-03-01 14:14:20

标签: scala syntax

如何创建一个返回类型,它是所有其他类型的子类型。我想要以下

def foo(): (String => String) = TODO
def bar(): String = TODO
def baz(): Int = TODO

TODO应该是什么类型的?

2 个答案:

答案 0 :(得分:5)

Scala中的“所有其他类型的子类型”为Nothing。你可以这样做:

def foo(): (String => String) = TODO

def bar(): String = TODO

def baz(): Int = TODO

def TODO: Nothing = throw new UnsupportedOperationException("not implemented")

修改

好吧,因为OP因为一个奇怪的原因接受了我的回答而且人们继续推销它(出于一个更奇怪的原因)我觉得有责任改变我的答案。所有积分都转到om-nom-nom

您正在寻找的东西已在Scala Standard Library中实现,其工作方式如下:

def foo(): Int = ???

答案 1 :(得分:0)

Nothing是每种类型的子类型,没有居住者。它是throw的类型,所以只需通过抛出

来实现tge方法体
def todo(): Nothing = throw new NotYetException