Immaginiamo i seguenti articoli nel campo di applicazione:inferenza di tipo nella lista degli argomenti in combinazione con setter non funzionante
object Thing {
var data: Box[String] = Empty
}
def perform[T](setter: Box[T] => Unit) {
// doesn't matter
}
La seguente non riesce a compilare:
perform(Thing.data = _)
Il messaggio di errore è:
<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 = _)
^
Mentre il seguente compila:
perform(Thing.data_=)
Da allora ho superato questo problema creando un'astrazione migliore, ma la mia curiosità rimane ancora.
Qualcuno può spiegare perché questo è?
'T' viene fuori dal nulla. Si suppone che sia un parametro di tipo per il metodo 'process' –