Swift 4 Generic where子句错误

时间:2018-07-10 07:17:29

标签: swift generics

我正在尝试编写以下函数

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

1 个答案:

答案 0 :(得分:5)

您似乎对通用约束的语法不太熟悉。应该这样写:

func take<C: Collection>(_ value: C) where C.Iterator.Element == Int {
    print(value.first)
}

此处错误消息 有点令人困惑。基本上,它是在要求您将约束写在{之前。