我有一个generic
可以初始化为任何类型的类。我想添加一个带有单个参数的函数,该函数采用的值既是类的泛型类型,又符合Comparable
协议。类型一致性应在预编译时强制执行。
我想做这样的事情:
class Object<T> {
let value: T!
init (value: T) {
self.value = value
}
func doSomething<U where U: Comparable, U == T>(otherValue: U) {
// do something
}
}
这可能吗?
抱歉不行。您无法在方法中进一步专门化泛型类型-您需要为所需的行为添加顶级函数。
这是Array
没有纯myArray.sort()
函数的原因,因为没有办法保证任何Array
实例的成员都将是Comparable
。而是有一个带有此签名的顶级函数:
func sort<T : Comparable>(inout array: [T])
您的顶层函数将具有类似的结构:
func doSomething<T: Comparable)(obj: Object<T>, otherValue: T) {
// ...
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句