我正在阅读有关 Zones 的此文档,其中包含以下代码:
runZoned(() {
print(Zone.current[#key]);
}, zoneValues: { #key: 499 });
Run Code Online (Sandbox Code Playgroud)
我试图找到更多的文档符号文字,但我找不到,它们非常稀缺。
我键入此代码进行测试:
var a = #b;
Run Code Online (Sandbox Code Playgroud)
我可以看到这a是一个Symbol.
Symbol文字如何工作?
它指的是什么?
仅仅通过创造一个我就创造了一个新的独特的Symbol?
符号不是唯一的。它们旨在在运行时表示源名称,因此符号文字的符号值#a(也可以写成const Symbol("a"))表示 identifier a。
符号只出现在 Dart 的动态部分。特别是它们用于表示类(传递给 的参数)和函数使用的命名参数。如果您的平台可以访问,它们也会在那里使用,这是它们最初的用途。InvocationnoSuchMethodFunction.applydart:mirrors
您不需要在这些情况之外使用符号,但在某些情况下,如#key上述,这只是提供带有自己名称的可重现(非唯一)令牌的简单方法。或者,如果您想要一个专属于您自己的库的令牌,您可以为私有名称创建一个符号#_foo. 这代表图书馆私有_foo标识符,其他图书馆无法复制。
具有非字符串的源名称表示允许,例如,Dart 到 JavaScript 编译器缩小名称,而不必在部署的代码中保留更长的源标识符。
| 归档时间: |
|
| 查看次数: |
176 次 |
| 最近记录: |