如何使用 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
如何使用 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
目前没有办法做到这一点。Darteval在运行时没有也没有代码生成。
但至少对于开发环境来说,这是 Gilad Bracha(Dart 的语言规范负责人)想要拥有的东西(https://groups.google.com/a/dartlang.org/forum/#!topic/misc/6O4g7eEHgOU ) .
还
我们希望在未来支持更强大的反射功能。这些将包括镜像构建器,旨在允许程序扩展和修改自身,以及基于镜像的调试 API。
https://www.dartlang.org/articles/reflection-with-mirrors/
因此,它可能会在将来的某个时间得到支持。但现在是不可能的。
如上所述,Dart 没有 eval,但是可以使用spawnUri()在另一个隔离中加载新的源代码。
我不确定是否有任何示例说明如何使用它。也许在飞镖讨论组上发布一条消息。
使用isolates 和spawnUri() 与使用eval 完全不同,因此它可能不适合您的项目。