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 中有编译器预处理器吗? 的相关文章

  • 在 Flutter 中逐个更改多个按钮的颜色

    单击 Go 按钮后 我希望按钮 1 变为红色 然后转回白色 然后按钮 2 应变为红色 然后恢复为白色 然后是3 4等等 我可以设计我的回调按钮 使按钮 1 变成红色 我不确定如何在 2 秒后将其变回白色 然后将下一个按钮变为红色等等 主程序
  • 如何使用 Flutter/Dart 根据选择将单个 Firestore 文档 ID 传递给另一个类?

    我正在尝试使用 flutter 设计一个功能 当用户选择旅行的缩略图时 它会将用户带到一个页面 其中包含他们选择的旅行的更多详细信息 我试图尽可能少地查询 Firestore 数据库 因此我试图从单个查询快照中获取文档 ID 并将其传递给
  • 导航到新屏幕时状态栏颜色

    我在我的中使用以下build 第一个屏幕更改状态栏颜色的方法 效果很好 1st screen s build method SystemChrome setSystemUIOverlayStyle SystemUiOverlayStyle
  • 在 flutter firebase 中登录时出现错误

    在使用错误的电子邮件或密码登录时 我希望获得我输入的小吃栏 但我的控制台中出现错误 error 初始任务操作失败 RecaptchaAction action signInWithPassword 有例外 内部 发生错误 无效的登录凭证 验
  • Dart 是单线程的,但为什么它使用 Future 对象并执行异步操作

    在文档中 Dart 是单线程的 但为了一次执行两个操作 我们使用与线程相同工作的 future 对象 使用Future对象 futures 来执行异步操作 如果 Dart 是单线程的 那么为什么它允许执行异步操作 Note 异步操作是并行操
  • CustomPainter 使用 Listenable 重绘

    CustomPainter 类似乎有几种触发重绘的方法 我让我的画家使用 shouldRepaint 方法 但是 我希望我的画家对可监听中的更改做出反应 而不是轮询更改 Flutter 文档指出 触发重绘的最有效方法是 扩展此类并向 Cus
  • 如何在 Flutter 移动端、网页端和窗口端添加条件导入?

    我有 flutter 应用程序 它为每个平台 移动 网络 窗口 使用不同的 webview 插件 虽然我有能力import平台基于web and mobile 我无法导入 Windows 版本 如果不是移动或网络 我尝试添加其他条件 但它需
  • 如何在Windows中编译nDPI库自带的ndpiReader.c?

    我想创建一个 exendpiReader c附带的演示程序nDPI library 我使用 github 页面上指定的命令成功地在 Ubuntu 上编译了它 如下所示 autogen sh configure make 我尝试在 Ubunt
  • C# 编译器 /optimize 命令行选项是否影响 JITter?

    我一直在读埃里克 利珀特 https stackoverflow com users 88656 eric lippert s article http blogs msdn com b ericlippert archive 2009 0
  • flutter 中 Future.delayed 与 Timer 有什么区别

    我想知道延迟代码执行的 Future delayed 和 Timer 方法之间的区别 两者似乎都做同样的事情 未来 延迟 Future delayed const Duration milliseconds 500 code VS Time
  • 如何根据有效(@mentions)和所有主题标签更改文本颜色?

    我想在文本中用不同颜色显示主题标签和有效提及 我得到了这段代码的帮助 该代码仅适用于主题标签 RichText convertHashtag String text List
  • 颤振动态形式无法正常工作

    在我的应用程序中 我想创建一组动态表单 用户可以在其中添加更多项目 在这种动态形式中 它由两个文本字段 1 电话字段 2 电子邮件字段和一个下拉字段组成 但我尝试的任何事情都无法正常工作 我已经要求修复我的代码 但没有得到答复 堆栈溢出问题
  • Google Dart:.where() 函数如何工作?

    var fruits apples oranges bananas fruits 0 apples fruits add pears fruits length 4 fruits where f gt f startsWith a toLi
  • 如何在 Flutter App 中按时间注销?

    如果用户在登录后对应用程序没有反应或不活动超过 5 分钟 我需要从应用程序中注销用户 该应用程序将转到主登录页面 我尝试实施给定的解决方案here https stackoverflow com questions 52602606 how
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • Maven - 从 SVN 提取代码

    我正在将 J2ee 项目从 Ant 迁移到 Maven ant 任务之一是从 SVN 存储库中提取现有源代码编译它 并将其 jar 添加到我当前的构建中作为 Jar 是否可以获取源代码并在 Maven 中编译它 谢谢你
  • Flutter Web 平台检查

    我正在尝试找到一种方法来查看我的 flutter web 项目正在哪个平台 iOS 或 Android 上运行 当我使用if Platform isIOS do something 我面临以下错误 Error Unsupported ope
  • 颤动:所选值不显示在下拉列表中

    我正在从 SQLite 数据库填充城市名称并尝试显示为下拉列表 我通过遵循教程使其工作 但遇到了一个小问题 所选值不会显示在下拉列表中 它继续显示默认提示值 但是 我能够分配和检索正确的选定值 这是我的代码 cities dart clas
  • Flutter:如何使用 AnimatedContainer 和扩展列?

    假设我们有 3 个孩子Column Flexible flex 1 child Container color Colors red Flexible flex 3 child Container color Colors yellow F
  • 无效字符错误:“fred”

    我确信他一定是一个新手问题 简单来说 我想定义我的第一个 Polymer dart 组件 只是我一直在同一个减速带上踢脚趾 为了使事情变得非常简单 我将其简化为一个非常简单的示例 我做了一个简单的rename示例 跑表 来自 Dart 组件

随机推荐