我是踢鈴
我通常CompactMap用來洗掉nil.
例如,
let wrappedArray = [nil, 2, 6, "ddf"].compactMap{ $0 }
wrappedArray //[2, 6, "ddf"]
而且,我想要元組相同的結果。但是,它不作業我預期。
我該怎么辦 ?
lz有空的時候回復一下。
謝謝你的幫助。
let tuple: [(Bool?, Int?)] = [
(state: true, value: 3),
(state: true, value: nil),
(state: nil, value: 55),
(state: false, value: nil)
]
let wrappedTuple = tuple.compactMap{$0}
wrappedTuple
//[(.0 Optional(true), .1 3),
//(.0 Optional(true), nil),
//(nil, .1 55),
//(.0 Optional(false), nil)]
uj5u.com熱心網友回復:
的let wrappedTuple = tuple.compactMap{$0}作品,如果你有(注意最后一個?):
let tuple: [(Bool?, Int?)?] = [ // <-- here
(state: true, value: 3),
(state: true, value: nil),
(state: nil, value: 55),
(state: false, value: nil),
nil,
nil
]
您可能想要(使用原始元組)使用過濾器,例如:
let wrappedTuple = tuple.filter{ $0.0 != nil && $0.1 != nil }
并根據需要調整邏輯。
如果您希望元組中的非可選項作為結果,請嘗試以下操作:
let wrappedTuple = tuple.filter{ $0.0 != nil && $0.1 != nil }.map{ ($0.0!,$0.1!) }
你仍然可以compactMap這樣使用。這實際上取決于您想要實作的目標。
let wrappedTuple = tuple.compactMap{$0.0}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/384076.html
上一篇:排序字串陣列,但Swift例外
