Gibt es eine Scala-feature, das Ihnen erlaubt, um eine Methode aufzurufen, deren name in einer Zeichenfolge gespeichert?
Vorausgesetzt, Sie haben einen string mit dem Namen einer Methode, die ein Objekt unterstützt diese Methode und einige Argumente, gibt es ein Sprach-feature, das Ihnen erlaubt, zu rufen, dynamisch?
Art, wie Ruby ' s send
parameter.
InformationsquelleAutor der Frage Geo | 2010-01-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie dies tun mit Reflexion in Java:
Und wenn Sie wollen, dass es leicht in Scala können Sie eine Klasse, die das für Sie übernimmt, plus eine implizite für die Konvertierung:
Tun diese Art der Sache wandelt compile-Zeit-Fehler in runtime-Fehler, jedoch (D. H. es ist im wesentlichen verhindert das Typ-system), also mit Vorsicht verwenden.
(Edit: und sehen die Nutzung von NameTransformer in den link oben--hinzufügen, dass wird helfen, wenn Sie versuchen, mithilfe von Operatoren.)
InformationsquelleAutor der Antwort Rex Kerr
Ja. Es heißt Reflexion. Hier ist ein link zu einer Möglichkeit, mit ein paar experimentelle Sachen Allerdings sollten Sie daran denken, dass Scala nicht eine dynamische Sprache und möglicherweise nicht in der Lage, leicht tun einige Dinge, die scripting-Sprachen tun können. Du bist wahrscheinlich besser zu machen, ein Spiel an der Schnur, und dann den Aufruf der richtigen Methode.
InformationsquelleAutor der Antwort Jim Barrows
InformationsquelleAutor der Antwort Ravi
Ja, Sie können!
Sie müssten
.invoke()
Methode von der Methode Objekt. Einfaches Beispiel:InformationsquelleAutor der Antwort Vasily802