斯卡拉新手,尋找指向一個慣用解決方案的指針,如果有的話。如何在運行時編譯/評估Scala表達式?
我想要任意用戶提供的Scala函數(可以引用我在代碼中定義的函數/類)應用於某些數據。
例如:我有我的myprog.scala
中定義的foo(s: String): String
和bar(s: String): String
函數。用戶運行我的程序是這樣的:
$ scala myprog data.txt --func='(s: Str) => foo(bar(s)).reverse'
這將逐行通過數據文件運行,併發出將用戶指定的功能到該行的結果。
對於額外的問題,我可以確保用戶定義函數中沒有副作用嗎?如果沒有,我可以限制功能只使用功能的一個受限子集(我可以保證是安全的)?
我會看看freenode上的lambdabot是如何編寫的,你的問題聽起來很相似。 – Reactormonk