Neu bei Scala und nach Hinweisen auf eine idiomatische Lösung suchen, falls es welche gibt.Wie kompiliere/evaluiere ich einen Scala-Ausdruck zur Laufzeit?
Ich möchte, dass beliebige benutzerdefinierte Scala-Funktionen (die Funktionen/Klassen verweisen können, die ich in meinem Code definiert habe) auf einige Daten angewendet werden.
Zum Beispiel: Ich habe foo(s: String): String
und bar(s: String): String
Funktionen in meiner myprog.scala
definiert. Der Benutzer führt mein Programm wie folgt aus:
$ scala myprog data.txt --func='(s: Str) => foo(bar(s)).reverse'
Diese Zeile für Zeile durch die Datendatei laufen würde und das Ergebnis der Anwendung der vom Benutzer festgelegten Funktion zu dieser Linie emittieren.
Kann ich für zusätzliche Punkte sicherstellen, dass keine Nebenwirkungen in der benutzerdefinierten Funktion auftreten? Wenn nicht, kann ich die Funktion darauf beschränken, nur eine eingeschränkte Teilmenge von Funktionen zu verwenden (die ich versichern kann)?
Ich würde sehen, wie das Lambdabot auf freenode geschrieben wird, klingt Ihr Problem ähnlich. – Reactormonk