首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在运行时动态评估代码

在运行时动态评估代码
EN

Stack Overflow用户
提问于 2014-01-13 03:18:03
回答 1查看 94关注 0票数 1

是否有可能获取源代码的字符串/AST,并在运行时对其进行计算(如eval())?我在文档中发现了一些暗示性的特性,但没有明显的证据。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-13 07:17:05

它不像调用eval()函数那么容易,但它是可能的。首先需要将范汤姆代码编译成类,然后才能执行它。

外星工厂的一个图书馆塑料就是这样做的.示例:

代码语言:javascript
复制
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类完成了将扇汤姆代码编译成可用类型的工作。

它使用扇编译器库,并基于在范什中找到的代码--扇the,它是扇范什发行版的一部分。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21083321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档