我有一個複雜的返回類型的方法,我想有一個函數,該方法的結果作爲參數。是否有可能爲該方法的返回類型創建一個別名?類似於C++的typeof推斷類型的別名
例如,
object Obj {
def method(x:Int) = 1 to x
type ReturnType = ???
//possible solution if i know a parameter for which the method won't fail
val x = method(1)
type ReturnType = x.type
//another possible solution, I don't need a parameter that won't fail
//the method but i still think there is a better way
lazy val x = method(1)
type ReturnType = x.type
//I would then like to have a function which takes ReturnType as a parameter
def doit(t:ReturnType) = Unit
}
事情是編譯器知道類型,但我不知道如何從他那裏得到它。
據我所知,它被稱爲* dependent types *。 – 2013-04-03 19:31:27
如果您使用的是IntelliJ Scala插件,您可以使用'Alt' +'='檢查任何表達式或方法的類型。在Scala REPL中,您可以使用':type'命令獲取任何表達式的類型。 – ghik 2013-04-03 19:45:05
@ghik是的,我知道我可以在IDE或REPL中找到該類型,但在我的情況下,完整類型超過80個字符長,並且在源代碼中使用它將無助於可讀性。也有可能返回類型將在未來發生變化。 – 2013-04-03 20:18:26