Có cách nào để tôi có thể gọi hàm reduce trên một loạt các bộ dữ liệu để tìm giá trị tối đa không?Swift Giảm một loạt các bộ dữ liệu trong
Ví dụ
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)
}
}
nơi tôi đang cố gắng để giảm dựa trên openOrdered
let lastGate = GatesOpen.reduce(Int.min,{ max($0,$1) })
Tôi tìm thấy 'dropFirst (gatesOpen)' là đẹp hơn một chút so với thao tác cắt thủ công. Nếu bạn muốn tính đến khả năng mảng trống với một tùy chọn, bạn có thể sử dụng 'first.map' để trả về' nil' nếu trống của mảng: 'let lastGate = gatesOpen.first.map {fst trong dropFirst (gatesOpen) .reduce (fst) { $ 0.openOrdered <$ 1.openOrdered? $ 1: $ 0 } } ' –
@AirspeedVelocity: Ý tưởng hay với dropFirst. - Tôi cũng đã nghĩ đến việc xử lý một mảng trống (gợi ý của bạn rất tao nhã!), Nhưng từ đoạn mã đã cho tôi thấy có ít nhất một "cổng", vì vậy tôi không muốn làm phức tạp mọi thứ. Cảm ơn vì bạn đã phản hồi. –
Rất đẹp! Lời giải thích ở trên, bổ sung cho các ví dụ giúp tôi hiểu rõ về chức năng giảm và các chức năng khác bắt chước thiết kế như vậy. – MooCow