Инициализация универсальных переменных в Scala

Вы используете неправильные инструменты. В ходе моего последнего главного проекта нам удалось убедить всю команду перемещаться в схему Wiki. Мало того, что это делало изменения отслеживания быстрее и легче, но это помогло организовать информацию лучше. Вместо того, чтобы иметь необходимость отслеживать произвольные индексы в документе крупного текста, гиперссылки были доступны между документами.

Это означало, что документы могли естественно вытекать из высокого уровня к специфическим особенностям. Реализация таких спецификаций была невероятно легка по сравнению с документами в формате Word. Кроме того, то, что документы были в центральной части, гарантировало, что никто все еще не работал от устаревшего копия, которую они сохранили к их жесткому диску.

я знаю, что может быть некоторое внутреннее сопротивление перемещению в новые направления. Но если можно убедить коллег, что они должны быть дальновидными и всегда сложными сами, они дадут ему выстрел и станут правоверными в два счета.:-)

10
задан Ian Nelson 19 October 2009 в 21:09
поделиться

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
  }
15
ответ дан 3 December 2019 в 17:20
поделиться

Вы не можете не инициализировать локальные переменные, но можете сделать это для полей:

scala> class foo[T] {
     | var t: T = _
     | }
defined class foo
8
ответ дан 3 December 2019 в 17:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: