exec
ist der Methodenname, wobei T
der generische Typparameter für die Methode ist. Die Methodensignatur muss den Typ T
angeben, damit wir T
als Argument für die Methode angeben können.
Bei Verwendung eines generischen Typparameter verwenden, können Sie verschiedene Arten und Wiederverwendung der gleichen Code zwischen ihnen, zum Beispiel passieren kann:
scala> exec[Int](() => 1)
res29: Int = 1
scala> exec[Double](() => 1.0)
res30: Double = 1.0
scala> exec[String](() => "hello, world")
res31: String = hello, world
Als ich exec[Int]
erklären, wird der Parameter f
ist nun ein Function0[Int]]
(oder () => Int
Wenn wir syntaktischen Zucker verwenden)
Wie @TzachZohar Notizen, der Scala-Compiler ist schlau genug, in der Lage, den Typ Parameter für uns zu Zeiten abzuleiten, was bedeutet, dass wir die eckige Klammer weglassen können, wenn Sie mit der Methode arbeiten. Zum Beispiel:
scala> exec(() => 1)
res32: Int = 1
scala> exec(() => 1.0)
res33: Double = 1.0
scala> exec(() => "hello, world")
res34: String = hello, world
Dies funktioniert wie der Compiler den Typ der T
durch die Verfahren in der Lage, den Rückgabetyp zu schließen.
Sie können mehr zu diesen Themen lesen: Type & polymorphism basics, Generic Classes, Local Type Inference und die Scala Specification for Local Type Inference
Die '[T]' 'in exec [T]' 'definiert T' als Typ-Parameter. – marstran