Как объявить универсальную переменную в Scala без ее инициализации (или инициализации любым значением)?
def foo[T] {
var t: T = ???? // tried _, null
t
}
2 ответа
def foo[T] {
var t: T = null.asInstanceOf[T]
t
}
И, если вам не нравится церемония, связанная с этим, вы можете облегчить это следующим образом:
// Import this into your scope
case class Init()
implicit def initToT[T](i: Init): T = {
null.asInstanceOf[T]
}
// Then use it
def foo[T] {
var t: T = Init()
t
}
Вы не можете не инициализировать локальные переменные, но можете сделать это для полей:
scala> class foo[T] {
| var t: T = _
| }
defined class foo
Похожие вопросы
Связанные вопросы
Новые вопросы
scala
Scala - это язык программирования общего назначения, в основном предназначенный для виртуальной машины Java. Разработанный для краткого, элегантного и безопасного для типов представления общих шаблонов программирования, он сочетает в себе как императивный, так и функциональный стили программирования. Его ключевые особенности: продвинутая система статического типа с выводом типа; типы функций; сопоставления с образцом ; неявные параметры и преобразования; перегрузка оператора; полная совместимость с Java; совпадение