在生成器中,我们有异步:
async
获得未来async*
获取流
和同步:
sync*
以获得Iterable
但是sync
在关键字中找不到启动*呢:
async只是一个"异步"吗;虚构关键词"?
;关键字";您链接到的是一个标识符(或潜在标识符(列表,这些标识符在Dart语法中的任何位置都具有特殊含义。
其中一些是";保留字";,并且永远不能用作标识符。
有些是";内置标识符";它可以在大多数但不是所有地方用作标识符(例如,不能是类型的名称(。
有些是";上下文关键字";这只意味着在一个非常特定的地方,在那里他们可以清楚地与一个名字区分开来。它们可以在任何可以使用标识符的地方用作标识符——它们表示其他东西的特殊地方正是不能使用标识符的地方。
少数单词仅在某些上下文中是保留单词。因为历史!
标识符sync
仅在列表中,因为它是上下文修饰符sync*
的标识符部分。链表是标识符的列表,因此标识符和运算符的sync*
组合不能出现在那里。
所以,如果一个词在某个地方有意思,它就在这个列表上。这就是清单的全部含义。你不需要背清单。
你应该记住所有保留词。这些永远不能用作变量的名称。
您最终可能会学习一些内置标识符,因为您试图将它们用作导入前缀(它们是小写,因此您可能不会尝试将它们用作类型名(。在实践中很少出现问题。
你可能会完全忘记上下文关键字的存在,因为很容易认为它们在语法中的使用与用作变量名完全不同。如果有什么不同的话,原始语法高亮可能会提醒你,当旁边的变量是橙色时,这个词有一些特殊之处,会使它变成紫色。
除了显而易见的之外,我喜欢问问题,而且它确实看起来像是fictional keyword.
。如果你在analysis_server中查看一下。
奥卡姆剃刀并不总是适用于编程,但在这种情况下-它会起作用,即使你不在乎;-(