Jak zadeklarować zmienną generyczną w Scali bez jej inicjowania (lub inicjowania do dowolnej wartości)?Inicjowanie zmiennych ogólnych w Scali
def foo[T] {
var t: T = ???? // tried _, null
t
}
Jak zadeklarować zmienną generyczną w Scali bez jej inicjowania (lub inicjowania do dowolnej wartości)?Inicjowanie zmiennych ogólnych w Scali
def foo[T] {
var t: T = ???? // tried _, null
t
}
def foo[T] {
var t: T = null.asInstanceOf[T]
t
}
A jeśli nie podoba ci się, że udział w ceremonii, można złagodzić to w ten sposób:
// 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
}
Nie nie może zainicjować zmienne lokalne, ale można to zrobić dla pól:
scala> class foo[T] {
| var t: T = _
| }
defined class foo
czy wiesz, dlaczego dozwolone są zmienne klasy, ale nie zmienne metody? – IttayD
Nie, nie wiem. –