这是一个真实的例子,我希望在Swift中扩展某个类型的数组。我搜索了Dash,在线文档和iBooks指南无济于事。我终于找到了这个SO answer并尝试了更精确的搜索,但仍然没有找到任何东西。
即使直接进入原始规范,也没有where子句:
扩展名 type-identifier type-inheritance-clause {}
type-inheritance-clause - > :class-requirement
class-requirement - >类
我读作:
extension Array: Person {} // doesn't compile
但是,这是有效的(以及我需要的):
extension Array where Element: Person {}
答案 0 :(得分:0)
您目前正在查看涵盖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