我正在尝试编写以下函数
func take<C: Collection where C.Iterator.Element Int>(_ value: C) {
print(value.first)
}
但是我一直收到编译器错误:
'where' clause next to generic parameters is obsolete, must be written following the declaration's type
答案 0 :(得分:5)
您似乎对通用约束的语法不太熟悉。应该这样写:
func take<C: Collection>(_ value: C) where C.Iterator.Element == Int {
print(value.first)
}
此处错误消息 有点令人困惑。基本上,它是在要求您将约束写在{
之前。