Swift减少一系列元组
发布时间:2020-12-14 05:03:38 所属栏目:百科 来源:网络整理
导读:有没有办法可以在元组数组上调用reduce函数来查找最大值? 例如 struct Gate{ var maxedOpenGates = 1 var GatesOpen : [(openOrdered : Int,gateNum : Int )] = [] init(defaultSelected : Int = 0){ GatesOpen.append(openOrdered : 1,gateNum : defaultSe
有没有办法可以在元组数组上调用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函数的参数是数组的元素,在你的 案例“门元组”.如果减少数组的结果也应该是门元组,那么初始元素和组合函数的结果 也必须是那种类型: let lastGate = gatesOpen.reduce(gatesOpen[0]) { $0.openOrdered < $1.openOrdered ? $1 : $0 } 当然,数组必须至少有一个元素才能工作. let lastGate = dropFirst(gatesOpen).reduce(gatesOpen[0]) { $0.openOrdered < $1.openOrdered ? $1 : $0 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |