微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Swift减少一系列元组

有没有办法可以在元组数组上调用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
}

当然,数组必须至少有一个元素才能工作.
避免gateOpen [0]与自身进行不必要的比较
你可以改成它(在@Airspeed的评论之后编辑):

let lastGate = dropFirst(gatesOpen).reduce(gatesOpen[0]) {
    $0.openordered < $1.openordered ? $1 : $0
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐