Yak*_*sky 5 arrays functional-programming optional swift
给定[Int?],需要从中构建字符串.
此代码段有效
let optionalInt1: Int? = 1
let optionalInt2: Int? = nil
let unwrappedStrings = [optionalInt1, optionalInt2].flatMap({ $0 }).map({ String($0) })
let string = unwrappedStrings.joined(separator: ",")
Run Code Online (Sandbox Code Playgroud)
但我不喜欢flatMap跟着map.有没有更好的解决方案?
这是另一种方法:
[optionalInt1, optionalInt2].flatMap { $0 == nil ? nil : String($0!) }
Run Code Online (Sandbox Code Playgroud)
编辑:你可能不应该这样做。这些方法更好,可以避免!
[optionalInt1, optionalInt2].flatMap {
guard let num = $0 else { return nil }
return String(num)
}
Run Code Online (Sandbox Code Playgroud)
或者:
[optionalInt1, optionalInt2].flatMap { $0.map(String.init) }
Run Code Online (Sandbox Code Playgroud)