У меня есть метод со сложным типом возврата, и я хотел бы иметь функцию, которая принимает результат этого метода в качестве параметра. Возможно ли создать псевдоним для возвращаемого типа метода? Что-то вроде typeof от C++Тип псевдонима для выводимого типа
например.
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
}
Дело в том, что компилятор знает тип, но я не знаю, как его получить.
Насколько я знаю, это называется * зависимыми типами *. –
Если вы используете плагин IntelliJ scala, вы можете проверить тип любого выражения или метода, используя 'Alt' +' = '. В Scala REPL вы можете получить тип любого выражения с помощью команды ': type'. – ghik
@ghik Да, я знаю, что могу найти тип в среде IDE или REPL, но в моем случае полный тип длиной более 80 символов, а его в исходном коде не поможет прочитать. Также возможно, что тип возврата изменится в будущем. –