Dart 符号文字

标签 dart

我正在阅读 this关于 Zones 的文档,它有以下代码:

runZoned(() {
  print(Zone.current[#key]);
}, zoneValues: { #key: 499 });

我试图找到更多的文档符号文字,但我找不到,它们非常稀缺。

我输入了这段代码进行测试:

var a = #b;

我可以看到 a 是一个 Symbol

Symbol 文字是如何工作的?

它指的是什么?

只要创建一个,我就创建了一个新的独特的Symbol

最佳答案

符号不是唯一的。它们旨在在运行时表示源名称,因此符号文字 #a 的符号值(也可以写成 const Symbol("a") )表示标识符 a

符号只出现在 Dart 的动态部分。特别是,它们被用于 Invocation 所使用的命名参数 的表示中。类(传递给 noSuchMethod 的参数)和 Function.apply功能。如果您的平台可以访问 dart:mirrors ,它们也在那里使用,这是引入它们的最初用途。

您不应该需要在这些情况之外使用符号,但在某些情况下,例如上面的#key,这只是一个简单的 em> 提供带有自己名称的可复制(非唯一) token 的方法。或者,如果您想要一个对您自己的库唯一的标记,您可以为一个私有(private) 名称创建一个符号,#_foo。这表示库私有(private)的 _foo 标识符,其他库无法复制。

使用不是字符串的源名称表示允许,例如,Dart 到 JavaScript 编译器缩小名称,而不必在部署的代码中保留较长的源标识符。

关于Dart 符号文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59185676/

相关文章:

dart - 有没有一种方法可以使用 Firestorage 将集合转换为 map 列表,而无需 Streambuilder/widget?

flutter - 在等待初始化应用程序时显示进度指示器,例如在验证用户时

flutter - 背后的逻辑是什么,什么onPressed带入Flutter?

unit-testing - 以编程方式模拟 Google Dart 中单元测试的用户交互

flutter - 从代码中完全重启应用程序

flutter - 在 flutter 中为不同的 ThemeData 自定义颜色

flutter - Flutter:无法在SingleChildScrollView中使容器垂直延伸

http - Flutter:我收到一个错误,指出状态为窗口小部件的对象不再出现在窗口小部件树中

flutter - 在AppBar上导致错误地存在于不同页面上

ios - Flutter:为什么卡片小部件之间的间距不同