加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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
}

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读