3

如何使用 dart-mirror API 动态创建匿名闭包?

就像解释器一样,在运行时编译代码。

var funcstr='bool (String s){ return (s==null); }';
var func=parseStr(funcstr);
// func(s)-> s==null;
var r=func('false');
// r=false;

那么,如何处理“parseStr”?

我的项目:http: //github.com/stevehsu77/surebet

4

2 回答 2

2

目前没有办法做到这一点。Darteval在运行时没有也没有代码生成。

但至少对于开发环境来说,这是 Gilad Bracha(Dart 的语言规范负责人)想要拥有的东西(https://groups.google.com/a/dartlang.org/forum/#!topic/misc/6O4g7eEHgOU ) .

我们希望在未来支持更强大的反射功能。这些将包括镜像构建器,旨在允许程序扩展和修改自身,以及基于镜像的调试 API。

https://www.dartlang.org/articles/reflection-with-mirrors/

因此,它可能会在将来的某个时间得到支持。但现在是不可能的。

于 2013-11-16T09:24:42.893 回答
1

如上所述,Dart 没有 eval,但是可以使用spawnUri()在另一个隔离中加载新的源代码。

我不确定是否有任何示例说明如何使用它。也许在飞镖讨论组上发布一条消息。

使用isolates 和spawnUri() 与使用eval 完全不同,因此它可能不适合您的项目。

于 2013-11-19T05:36:22.197 回答