【发布时间】:2016-04-25 18:55:00
【问题描述】:
来自 C++ 背景(模板),我很难理解为什么以下 Swift 代码(泛型)无法编译:
func backwards<T>(array: [T]) -> [T] {
let reversedCollection = array.sort(>)
return reversedCollection
}
我的理解是 T 是一个泛型类型,我没有对其施加任何约束 (<T>) 并将 array 声明为 Array<T> 类型。然而,这会产生以下错误:
对成员'sort()'的模糊引用
我了解可以使用协议对泛型类型施加约束。但是,在这种情况下,我不希望对 T 有任何限制。相反,我想限制第一个参数的类型。
我已经阅读 Apple 的关于通用类型的文档几个小时了,但我仍然不太聪明。我的印象是这是不可能的,并且仅对声明的类型施加了约束,但就我所知。
所以问题是:如果可能,我如何对函数参数的类型施加约束?如果不是,我如何获得相同的结果?
【问题讨论】: