Lassen sie die folgenden Elemente in Rahmen vorstellen:Typinferenz in Argumentliste in Kombination mit Setter nicht
object Thing {
var data: Box[String] = Empty
}
def perform[T](setter: Box[T] => Unit) {
// doesn't matter
}
Die folgenden nicht kompilieren:
perform(Thing.data = _)
Die Fehlermeldung lautet:
<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 = _)
^
Während die folgenden kompiliert:
perform(Thing.data_=)
Ich habe seitdem dieses Problem durch die Schaffung einer besseren Abstraktion übertroffen, aber meine Neugier bleibt immer noch.
Kann jemand erklären, warum das ist?
'T' kommt aus dem Nichts. Soll es sich um einen Typparameter für die Methode 'process' handeln –