有没有一种方法可以在元组数组上调用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,{ max($0,$1) })
是的,您可以像其他数组一样减少元组数组。Combine函数的参数是数组的元素,在您的情况下为“ gate tuples”。并且如果减少数组的结果也应该是门元组,则初始元素和Combine函数的结果也必须是该类型:
let lastGate = gatesOpen.reduce(gatesOpen[0]) {
$0.openOrdered < $1.openOrdered ? $1 : $0
}
当然,数组必须至少具有一个元素才能起作用。为了避免gatesOpen[0]
与自身进行不必要的比较,您可以将其更改为(在@Airspeed的注释后编辑):
let lastGate = dropFirst(gatesOpen).reduce(gatesOpen[0]) {
$0.openOrdered < $1.openOrdered ? $1 : $0
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句