有没有办法可以在元组数组上调用reduce函数来查找最大值?
例如
struct Gate{ var maxedOpenGates = 1 var GatesOpen : [(openordered : Int,gateNum : Int )] = [] init(defaultSelected : Int = 0){ GatesOpen.append(openordered : 1,gateNum : defaultSelected) } private func manipulateGates(gates : [SegmentButton]){ for i in GatesOpen{ gates[i.gateNum].toggleSelected() } } mutating func openGate(index : Int,buttons : [SegmentButton]){ if GatesOpen.count < maxedOpenGates{ GatesOpen.append( openordered: GatesOpen.count,gateNum: index) }else{ //////Finding the gate that was Opened the longest//// let lastGate = GatesOpen.reduce(Int.min,{ max($0,$1) }) } manipulateGates(buttons) } }
我试图根据openordered减少的地方
let lastGate = GatesOpen.reduce(Int.min,$1) })
解决方法
是的,您可以像任何其他数组一样减少元组数组.
combine函数的参数是数组的元素,在你的
案例“门元组”.如果减少数组的结果也应该是门元组,那么初始元素和组合函数的结果
也必须是那种类型:
combine函数的参数是数组的元素,在你的
案例“门元组”.如果减少数组的结果也应该是门元组,那么初始元素和组合函数的结果
也必须是那种类型:
let lastGate = gatesOpen.reduce(gatesOpen[0]) { $0.openordered < $1.openordered ? $1 : $0 }
当然,数组必须至少有一个元素才能工作.
避免gateOpen [0]与自身进行不必要的比较
你可以改成它(在@Airspeed的评论之后编辑):
let lastGate = dropFirst(gatesOpen).reduce(gatesOpen[0]) { $0.openordered < $1.openordered ? $1 : $0 }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。