我一直在試圖從字符串數組中提取非零值。如下所示。但是,我的資深人士也希望能夠從其他類型中提取非零值。如何使集合類型約束中的泛型?
我讀,仿製藥能幫助我處理不同的類型。我怎樣才能使用泛型,以便我可以像使用擴展一樣使用其他類型? (如果陣列是即[字符串?]它必須返回[字符串],返回[INT]如果[詮釋?])
getNonNil
必須返回的特定類型的所提取的非零值
由於我必須做進一步的計算。
我已經試過低於:
import Foundation
// Extended the collection-type so that collectiontype is constrained to having element with optional strings
extension CollectionType where Self.Generator.Element == Optional<String>{
func getNonNil() -> [String] {
// filter out all nil elements and forcefully unwrap them using map
return self.filter({$0 != nil}).map({$0!})
}
}
// Usage
let x: [String?] = ["Er", "Err", nil, "errr"]
x.getNonNil().forEach { (str) in
print(str)
}
flatmap工作。但在第二種解決方案中,我該如何使用它?你能向我展示一個例子嗎?因爲,當我嘗試時,我得到了「致命錯誤:意外地發現零,同時解開一個可選值」或其他錯誤。 – Dari
@Dari您可能想在'getNonNil'方法中執行'return flatMap {$ 0.value}'。 – Hamish