Können in Scala generische Typparameter mit * function * -Definitionen verwendet werden?

Gibt es eine Syntax, die generische Typparameter für Funktionsliterale zulässt? Ich weiß, ich könnte es in eine Methode einwickeln wie:

def createLongStringFunction[T](): (T) => Boolean = {
  (obj: T) => obj.toString.length > 7
}

Aber dann muss ich die Methode für jeden Typ T aufrufen und eine neue Funktion erhalten. Ich habe die Sprachreferenz durchgesehen und dabei festgestellt, dass die Funktionsliteral-Syntax vom Compiler in eine Instanz von a übersetzt wirdFunktionsweise Wenn ein Objekt selbst über generische Eingabetypen verfügt, sieht es so aus, als würde der Compiler diese Parameter zum Zeitpunkt der Erstellung erkennen. Ich habe keine Syntax gefunden, die es mir tatsächlich ermöglicht, einen oder mehrere der Typparameter von zu belassenFunktionsweise ungebunden ". Was ich bevorzugen würde, ist etwas in der Art von:

// doesn't compile
val longStringFunction: [T](T) => Boolean = (obj: T) => obj.toString.length > 7

Gibt es so etwas? Oder was ist der explizite Typ einer eta-Expansionsfunktion, wenn die zu expandierende Methode generische Parameter hat?

Dies ist ein rein erfundenes und nutzloses Beispiel. Natürlich könnte ich einfach die Funktion Any hier verwenden.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage