gpt4 book ai didi

flutter - Dart const 作为预处理器指令

转载 作者:行者123 更新时间:2023-12-03 02:44:11 24 4
gpt4 key购买 nike

我正在寻找类似于 Dart 中的预处理器指令的东西。

这个想法是为了避免将某些代码部分有条件地编译为某些标志。

现在,阅读 this 之类的内容我开始认为,当 Dart 编译器执行 Tree Shaking 时,它会丢弃未使用的代码部分,将它们排除在编译代码之外。

假设我做对了,会是这样吗:

static const needExecute = false;

if (needExecute){
//instructions
}

或者像这样:

static const needValue = false;

var myList = [
"value1",
if(needValue)
"value2",
if(needValue)
"value3",
]

编译器应该在编译时知道该代码将永远不会被执行,它会成为摇树的“受害者”,根本不会被编译。

此外,conditional imports也是一种可以接受的做事方式吗?

我的意思是,我可以使用两个不同的导入来公开一个为空或包含指令(第一种情况)或两种列表(第二种情况)的方法。

如果我不具备反编译应用程序的技能,我有什么方法可以确定这一点?

非常感谢!

最佳答案

你的假设是正确的。如果 if 的求值可以在编译时求值,那么它将相应地进行 tree-shaking。

因此,写作:

const condition = true;

if (condition) {
print('42');
} else {
print('24');
}

将编译为:

print('42');

if 被删除,因为它已经在编译时进行了评估。无需在运行时重新评估它

关于flutter - Dart const 作为预处理器指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60836375/

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