我有这门课:
class ValueTimestamp {
let value: Double
let timestamp : Double
init(value:Double, timestamp:Double) {
self.value = value
self.timestamp = timestamp
}
}
然后我有一个这个类的对象数组。
现在我要扫描这个数组并找到具有最小值的
ValueTimestamp
类的对象。假设数组有3个元素
element1
(值=12,时间戳=2)element2
(值=5,时间戳=3)element3
(值=10,时间戳=4)和
let myArray = [element1, element2, element3]
现在我想找到具有最小值的元素。
我想这会管用的
let min = myArray.map({$0.value}).min()
let minIndex = myArray.firstIndex(of: min)
但是第二行给了我一个错误
调用中的参数标签不正确(具有“of:”,应为“where:”)
有什么想法吗?
最佳答案
firstIndex(of: )
不起作用,因为我认为您的类不符合Equatable
。
这就是为什么你希望在这个案例中使用firstIndex(where:)
。
同样,在下面的代码中,您没有得到对象,而是得到值,因此min
是Double?
而不是ValueTimeStamp?
的类型:
let min = myArray.map({$0.value}).min()
使用where可以使用以下命令获取最小索引:
let minIndex = myArray.firstIndex(where: {$0.value == min})
参考文献:
https://developer.apple.com/documentation/swift/array/2994720-firstindex
https://developer.apple.com/documentation/swift/array/2994722-firstindex