为什么有一个关键工作同步-没有明星



在生成器中,我们有异步:

  • async获得未来
  • async*获取流

和同步:

  • sync*以获得Iterable

但是sync在关键字中找不到启动*呢:

async只是一个"异步"吗;虚构关键词"?

;关键字";您链接到的是一个标识符(或潜在标识符(列表,这些标识符在Dart语法中的任何位置都具有特殊含义。

其中一些是";保留字";,并且永远不能用作标识符。

有些是";内置标识符";它可以在大多数但不是所有地方用作标识符(例如,不能是类型的名称(。

有些是";上下文关键字";这只意味着在一个非常特定的地方,在那里他们可以清楚地与一个名字区分开来。它们可以在任何可以使用标识符的地方用作标识符——它们表示其他东西的特殊地方正是不能使用标识符的地方。

少数单词仅在某些上下文中是保留单词。因为历史!

标识符sync仅在列表,因为它是上下文修饰符sync*的标识符部分。链表是标识符的列表,因此标识符和运算符的sync*组合不能出现在那里。

所以,如果一个词在某个地方有意思,它就在这个列表上。这就是清单的全部含义。你不需要背清单。

应该记住所有保留词。这些永远不能用作变量的名称。

您最终可能会学习一些内置标识符,因为您试图将它们用作导入前缀(它们是小写,因此您可能不会尝试将它们用作类型名(。在实践中很少出现问题。

你可能会完全忘记上下文关键字的存在,因为很容易认为它们在语法中的使用与用作变量名完全不同。如果有什么不同的话,原始语法高亮可能会提醒你,当旁边的变量是橙色时,这个词有一些特殊之处,会使它变成紫色。

除了显而易见的之外,我喜欢问问题,而且它确实看起来像是fictional keyword.。如果你在analysis_server中查看一下。

奥卡姆剃刀并不总是适用于编程,但在这种情况下-它会起作用,即使你不在乎;-(

最新更新