我希望能够获取一个字符串(使用正确的Dart语法)并将其转换为可调用的dart函数。有没有办法做到这一点?
例如,我会收到字符串
void test() { print("testing!"); }
然后将其转换为可调用函数。我想这样做的原因是能够从其他服务器下载dart文件并调用它们的功能。
答案 0 :(得分:2)
Dart目前没有eval()函数,也不支持任意字符串的运行时编译,尽管它可能在将来使用。
因此,您必须在dart中创建自己的VM才能执行您想要执行的操作。
答案 1 :(得分:1)
取决于您的目标平台。如果您的目标是独立的Dart VM,那么它已经成为可能。 SDK工具Pub正在这样做。
您可以设置一个应用程序内部Web服务器,该服务器为您在gernated应用程序中嵌入的功能提供服务。您可以将应用程序加载到另一个隔离区中,并使用消息传递与该隔离区进行通信。此方法也可用于为我们的应用程序创建插件。
但是可能需要花费很多时间才能实现。如果要解析数学表达式或该语言的其他简化子部分,您可以查看可用的Pub包(parsers或math_exprerssions)。
答案 2 :(得分:0)
您目前可以做的是创建JavaScript并使用它的eval()并使用JS-interop。