gpt4 book ai didi

function - 如何在Dart中对函数进行字符串化和反字符串化?

转载 作者:行者123 更新时间:2023-12-03 04:25:02 26 4
gpt4 key购买 nike

基本上,我需要存储一个Function并使用文件来获取相同的Function。 jsonEncode / Decode不起作用(因为字符串化失败),而且我找不到其他方法来执行此操作。 Function类没有参数/ body getter,所以我什至不知道如何实现自己的逻辑。

functionEncode(Function x);
functionDecode(Function x); // How do I implement these?

Function x = (int x) {return x * 2;};

void main() {
String encoded = functionEncode(x);
Function decoded = functionDecode(x);
assert(decoded == x); //passes
}

有谁知道我如何能够对一个函数进行字符串化/去字符串化?这有可能吗?

最佳答案

您所要求的实际上是在运行时运行任意代码(以字符串化函数的形式)的能力。从技术上讲,这是可行的,但这是一种回旋方式,有关iiro.dev的文章对此进行了演示:

final code = 'void main() { print("Hello World"); }';
final uri = Uri.dataFromString(code, mimeType: 'application/dart');
await Isolate.spawnUri(uri, [], null);

(完整的文章可以在 here中找到。)

但是,这样做有几个注意事项。首先,它仅在程序在JIT模式下运行时才起作用,因此,如果将Dart程序编译为AOT编译的独立程序,则仅能正常工作。 (在Flutter中,这意味着它仅在应用程序以 Debug模式而不是 Release模式运行时才起作用。)

第二,运行此代码与在Javascript中使用 eval属于同一伞下,因为它不仅容易出错,而且存在巨大的安全风险。如果将此代码放在应用程序中并发布该应用程序,则实际上是在向人们的电话中安装后门,从而使某人可以运行他们想要的任何代码。没有真正的方法可以限制或沙盒化此功能,因此,从某种程度上讲,这始终是安全问题,您的应用程序始终可能会成为木马恶意软件。

因此,基本上,您的问题的答案与有人在询问如何使用 eval的情况相同。答案总是相同的: 您不

关于function - 如何在Dart中对函数进行字符串化和反字符串化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60290483/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com