不能援引“<”与类型的参数列表“(T,T)”
问题描述:
我试图实现一个功能,这将在阵列发现的最小价值的指标:不能援引“<”与类型的参数列表“(T,T)”
func minIndex<T: Equatable>(array: [T]) -> Int {
var minValue = array[0]
var minIndex = Int()
for (index, item) in enumerate(array) {
if item < minValue as T {
minValue = item
minIndex = index
}
}
return minIndex
}
但我有一个错误“
if item < minValue as T {
答
您需要的元素为Comparable
,以使他们能够与<
进行比较:有型“(T,T)””的参数列表上线不能援引“<”
func minIndex<T: Comparable>(array: [T]) -> Int {
var minValue = array[0]
var minIndex = Int()
for (index, item) in enumerate(array) {
if item < minValue { // Your " as T" cast is not needed here
minValue = item
minIndex = index
}
}
return minIndex
}
Equatable
仅意味着它们可以与==
进行比较。
谢谢!如果我在Array扩展中实现它,那么如何?与此变化: FUNC minIndex() - >内部{ 变种minValue(最小值)=自[0] ... 为 在枚举(自)(指数,项目){ 如果项
2015-01-09 21:11:04
@AlesTsurko:您(当前)无法定义只能应用于受限数组类型的扩展方法(例如,要求元素为Comparable)。有关类似问题,请参阅http://stackoverflow.com/questions/24938948/array-extension-to-remove-object-by-value/24939100#24939100。 – 2015-01-09 21:14:24