如何将可选整数数组连接到字符串?

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.有没有更好的解决方案?

Ale*_*ica 6

这是另一种方法:

[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)

  • `flatMap` 已替换为 `compactMap`。 (2认同)