我想能夠採取一個字符串(與適當的Dart語法)並將其轉換爲可調用的DART函數。有沒有辦法做到這一點?如何動態生成函數?
例如,我會收到字符串,
void test() { print("testing!"); }
然後把它變成一個可調用的函數。我想這樣做的原因是能夠從其他服務器下載dart文件並調用它們的功能。
我想能夠採取一個字符串(與適當的Dart語法)並將其轉換爲可調用的DART函數。有沒有辦法做到這一點?如何動態生成函數?
例如,我會收到字符串,
void test() { print("testing!"); }
然後把它變成一個可調用的函數。我想這樣做的原因是能夠從其他服務器下載dart文件並調用它們的功能。
達特目前還沒有一個eval()函數,也不是任意字符串的支持運行時編譯,儘管它可能在未來。
所以,你必須在飛鏢內製作自己的虛擬機來做你想做的事情。
取決於您的目標平臺。如果您的目標是獨立的Dart VM,則已經可以實現。 SDK工具Pub正在這樣做。
您可以設置一個應用程序內部網絡服務器,該服務器將您的功能嵌入到gernated應用程序中。您可以將應用程序加載到另一個隔離區,並使用消息傳遞與該隔離區進行通信。這種方法也可以用來爲我們的應用程序創建插件。
但是可能需要很多時間才能自行實施。如果要解析數學表達式或其他簡化的語言部分,可以查看可用的Pub包(parsers或math_exprerssions)。
你目前可以做的是創建JavaScript並使用它的eval()並使用JS-interop。
可能有關聯? http://stackoverflow.com/questions/13293345/dynamic-class-method-invocation-in-dart –
@ user1956570 https://www.dartlang.org/ - 驚人的,那些搜索引擎 – user2864740