2014-03-01 102 views
0

如何製作所有其他類型的子類型的返回類型。我想要以下虛擬佔位符

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

TODO是什麼類型?

+10

通過你想做什麼的方式是已經可以在[標準庫] (https://github.com/scala/scala/blob/v2.10.3/src/library/scala/Predef.scala#L252):'def foo():Int = ???' –

+0

我會把它當作一個答案。謝謝。 –

+0

@ om-nom-nom太糟糕了,你不只是寫一個簡短的正確答案。注意「錯誤」的答案。考慮到人們爭論是否稱它爲TODO或其他名稱。擁有自己的TODO是可以的,但實際上每個人都愛上了???這表明普遍採用。 –

回答

5

實現TGE方法體Scala中「所有其他類型的子類型」是Nothing。你可以做這樣的事情:

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

def bar(): String = TODO

def baz(): Int = TODO

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

編輯

OK,如OP接受我的回答對一個奇怪的原因,人們一直upvoting它(對於一個更奇怪的原因),我感到有責任來改變我的答案。所有學分去om-nom-nom

您正在尋找已經在Scala Standard Library實現和工作原理是這樣的事情:

def foo(): Int = ??? 
+0

噓聲,嘶嘶聲。評論是答案,使用???這就是它的目的! –

0

Nothing是每種類型的子類型,它沒有居住者。這是一個throw的類型,所以簡單地通過投擲

def todo(): Nothing = throw new NotYetException