我可能有這個錯誤。菜鳥。我在這裏重新創建了我在操場類型環境中所做的事情。基本上,發件人是其他滑塊的UITableView中的滑塊。 myData是底層數據。除了對應於發件人項目的數據之外,我想對所有基礎數據的項目進行計算。我不知道我的閉包語法是否正確。這是我第一次創建一個。Swift過濾器和映射結構數組
// sender comes over as a struct
struct myStruct {
var tag: Int = 0
var value: Float = 0
}
let sender = myStruct(tag: 1, value: 199)
// some vars for the calculation
let globalTotal: Float = 597
let globalAnotherTotal: Float = 0
// an array of data structs
struct myDataStruct {
var name: String = ""
var value: Float = 0
}
var myData: [myDataStruct] = []
myData.append(myDataStruct(name: "Tom", value: 45.0))
myData.append(myDataStruct(name: "Dick", value: 16.4))
myData.append(myDataStruct(name: "Harry", value: 12.3))
// a closure to do the calculation
var calcOtherVals: (Float, Float) -> (Float) = { (startVal, senderStartVal) in
let remainingStartVals = globalTotal - senderStartVal
let remainingNewVal = globalTotal - sender.value - globalAnotherTotal
let endVal = ((startVal * (100/remainingStartVals))/100) * remainingNewVal
return endVal
}
// now need to perform calcOtherVals on all the .value floats in myData EXCEPT the element at position sender.tag hopefully using filter and map
所以基本上我試圖使用過濾器和映射和calcOtherVals閉包來編輯結構數組。我可以用條件和循環以及calcOtherVals作爲函數來做到這一點沒有問題。只是希望更優雅地做。
問題:與代碼註釋一樣,我需要對myData中的所有.value浮點數執行calcOtherVals
,除了位置sender.tag
處的元素外。怎麼樣?
我認爲我沒有弄清楚,你想映射'myData'並過濾它以獲取基於什麼的所有數據? 'myDataStruct'沒有'tag'屬性。你能詳細說明一下嗎? –