1
是否可以在Fantom運行時採用源代碼的字符串/ AST並對其進行評估(如eval())?我在文檔中發現了一些建議功能,但沒有明顯的證據。在運行時動態評估代碼
是否可以在Fantom運行時採用源代碼的字符串/ AST並對其進行評估(如eval())?我在文檔中發現了一些建議功能,但沒有明顯的證據。在運行時動態評估代碼
這不像調用eval()
函數那麼簡單,但它是可能的。您需要先將您的Fantom代碼編譯到類中,然後才能執行它。
Plastic,來自Alien-Factory的圖書館就是這麼做的。例如:
using afPlastic
class Example {
Void main() {
eval("2 + 2") // --> 4
}
Obj? eval(Str code) {
model := PlasticClassModel("MyClass", true)
model.addMethod(Obj?#, "eval", "", code)
myType := PlasticCompiler().compileModel(model.toFantomCode)
return myType.make->eval()
}
}
的PlasticCompiler類完成編譯代碼魅影成可用的類型的作業。
它使用Fantom compiler庫,它基於Fansh中的代碼 - Fantom外殼,屬於Fantom發行版的一部分。
你在看哪些文件的部分? –