[英]Finding closest value in array of custom objects in swift
嗨,我在 swift 中有自定义对象数组,如下所示
class 以下对象
Class Person {
let name: String
let pointsEarned: CGFloat
}
数组如下
let person1 = Person(“name1”, “5.6”)
let person2 = Person(“name2”, “6.6”)
let person3 = Person(“name3”, “1.6”)
let persons = [person1, person2, person3 ]
我想找到积分接近 7.0 的人
我可以为此编写的数组有扩展名吗?
感谢任何帮助。 谢谢。
亚历山大的回答很好,但你只需要min
。
public extension Sequence {
func min<Comparable: Swift.Comparable>(
by getComparable: (Element) throws -> Comparable
) rethrows -> Element? {
try self.min {
try getComparable($0) < getComparable($1)
}
}
}
我也认为abs
作为全局 function 看起来很陈旧。 magnitude
是相同的值。
persons.min { ($0.pointsEarned - 7).magnitude }
如果需要,可以使用带有尾随闭包的参数 label:
persons.min(by:) { ($0.pointsEarned - 7).magnitude }
按对象与目标的距离 ( 7
) 对对象进行排序, computed as
abs(goal - score)`:
people.sort { abs(7 - $0.score) < abs(7 - $1.score) }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.