2013-11-16 2 views
3

Как использовать API-интерфейс dart-mirror для динамического создания анонимного закрытия?Как создать закрытие из String в Dart?

Как интерпретатор, скомпилируйте код во время выполнения.

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

ответ

2

В настоящее время нет никакого способа сделать это. Dart не имеет eval и без генерации кода во время выполнения.

Но это что-то такое, что Гилад Брача (лидирующий язык от Dart) хочет иметь (https://groups.google.com/a/dartlang.org/forum/#!topic/misc/6O4g7eEHgOU) хотя бы для среды разработки.

Также

Мы хотели бы, чтобы поддержать более мощные отражающие особенности в будущем. К ним относятся производители зеркал, предназначенные для расширения и модификации программ, а также API-интерфейс отладки на основе зеркал.

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

Так что, вероятно, будет поддерживаться некоторое время в будущем. Но сейчас это невозможно.

+0

Я пытаюсь использовать dart-js для вызова 'eval' в DOM. Тем не менее, dart-js не может работать под дартвм. Возможно, сделать инъекцию vm или создать мост между дротиками и DOM. Что-то вроде js-interop. Но я понятия не имею. Во всяком случае, спасибо. – steve

1

Как уже упоминалось выше, у Dart нет eval, однако можно загрузить новый исходный код в другой изолятор, используя spawnUri().

Я не уверен, есть ли какие-либо примеры использования этого. Возможно, опубликуйте сообщение на дроте discussion group.

Использование изолятов и spawnUri() отличается от использования eval, поэтому оно может не соответствовать вашему проекту.

+0

Простой способ реализовать «spawnUri()» ниже 'main (args, msg) { vm_main (msg); } vm_main (МСГ) { } ' так что вы можете' икру (vm_main, сбщ) или 'spawnUri (Ури, арг, МСГ);' – steve

+0

Я не пробовал использовать spawnUri () раньше, может ли uri быть произвольным http uri? Или есть некоторые ограничения? –

Смежные вопросы