给定 [Int?],需要从中构建字符串。
这段代码有效
let optionalInt1: Int? = 1
let optionalInt2: Int? = nil
let unwrappedStrings = [optionalInt1, optionalInt2].flatMap({ $0 }).map({ String($0) })
let string = unwrappedStrings.joined(separator: ",")
但我不喜欢 flatMap
后接 map
。有没有更好的解决方案?
最佳答案
这是另一种方法:
[optionalInt1, optionalInt2].flatMap { $0 == nil ? nil : String($0!) }
编辑:您可能不应该这样做。这些方法更好,可以避免 !
[optionalInt1, optionalInt2].flatMap {
guard let num = $0 else { return nil }
return String(num)
}
或:
[optionalInt1, optionalInt2].flatMap { $0.map(String.init) }
关于arrays - 如何将可选整数数组加入字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41489353/