这是一个真实的例子,我想在Swift中扩展某个类型的数组。我搜索了Dash,在线文档和iBooks指南无济于事。我终于找到了这个SO answer并尝试了更精确的搜索,但仍然没有找到任何东西。
即使直接进入原始规范,也没有where子句:
extension type-identifier type-inheritance-clause {}
type-inheritance-clause - >:class-requirement
class-requirement - > class
我读到的是:
extension Array: Person {} // doesn't compile
但是,这是有效的(我需要的):
extension Array where Element: Person {}
您目前正在查看涵盖stdlib和Foundation等内容的框架引用。这是一个语法级问题,因此您需要查看The Swift Programming Language。您正在寻找的具体部分是Extensions with a Generic Where Clause。
我不确定你在看哪个规格。它可能已过时,但是如果你看一下语言参考,current definition of extension
包括generic-where-clause
:
extension type-identifier type-inheritance-clause(opt) generic-where-clause(opt) extension-body
extension-body → {extension-members(opt)}
extension-members → extension-member extension-members(opt)
extension-member → declaration compiler-control-statement