Wyobraźmy sobie następujące elementy w zakresie:typ wnioskowanie w liście argumentów w połączeniu z seter nie działa
object Thing {
var data: Box[String] = Empty
}
def perform[T](setter: Box[T] => Unit) {
// doesn't matter
}
Poniżej nie kompilacji:
perform(Thing.data = _)
Komunikat o błędzie jest:
<console>:12: error: missing parameter type for expanded function ((x$1) => Thing.data = x$1)
perform(Thing.data = _)
^
<console>:12: warning: a type was inferred to be `Any`; this may indicate a programming error.
perform(Thing.data = _)
^
Podczas następujących kompilacji:
perform(Thing.data_=)
Od tego czasu przekroczyłem tę kwestię, tworząc lepszą abstrakcję, ale moja ciekawość nadal istnieje.
Czy ktoś może wyjaśnić, dlaczego tak jest?
'T' wychodzi znikąd. Czy ma to być parametr typu do metody 'process' –