Dart 中有编译器预处理器吗?

2024-02-05

由于在启动 dart 应用程序之前需要进行编译,我想知道编译器预处理器是否可用,或者是否计划在不久的将来为 Dart 提供。
到目前为止,我在网络上/在 dart 网站内部的搜索均未成功。

(通过预处理器,我的意思是:

#define max(A,B)    ( (A) > (B) ? (A):(B)) 

or :

#define NumType double
#define NumTypeZero 0.0

// used with :
NumType myNum = NumTypeZero;

or :

#define DEBUG 

// use
#ifdef DEBUG
   print('var1 : $var1, var2:$var2, ...');
#endif

)

编辑:我想知道为什么还没有预处理器,因为看起来我们已经“接近”了:
- Dart 必须扫描文件中的库依赖项,以便以正确的顺序加载库。
- Dart 编辑器还扫描文件进行语法、类型检查和其他检查。
- 可以在编辑器中启动一些自动文件处理(我找不到有价值的链接,如果您有,请告诉我)。


基本都是其他人说的...

如果您使用 dart2js 进行编译,并且 DEBUG 是常量且为 false,则树摇动将会抛出 if (DEBUG) {} 块内的代码。所以你可以只使用 if 语句。

您还可以使用assert() 语句。当使用 dart2js 进行生产模式编译时,断言以及传递给它的表达式将被丢弃。

所以这实际上与 #ifdefs 得到的行为相同 - 你可以将 dart2js 视为你的预处理器;)

我也不明白为什么你想使用 #defines 而不是常量。

如果你想在 DartVM 中运行你的代码,你可以使用 dart2js --output-type=dart 对你的 dart 源进行 tree-shaking。

更新:另请参阅String.fromEnvironment() https://api.dartlang.org/docs/channels/stable/latest/dart_core/String.html#fromEnvironment, bool.fromEnvironment() https://api.dartlang.org/docs/channels/stable/latest/dart_core/bool.html#fromEnvironment, and int.fromEnvironment() https://api.dartlang.org/docs/channels/stable/latest/dart_core/int.html#fromEnvironment。您可以在编译时使用“dart2js -D=”设置这些环境变量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dart 中有编译器预处理器吗? 的相关文章

随机推荐