arrays - 如何将可选整数数组加入字符串?

标签 arrays swift functional-programming option-type

给定 [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/

相关文章:

objective-c - 合并两个数组,同时保留原始数组顺序

swift - 如何修复 : "passing non-escaping parameter to function expecting @escaping closure"

ios - 在核心数据中检索/保存自定义对象时出错

javascript - 如何在 Javascript 中实现 Haskell 的 FRP Behavior 类型?

arrays - 在 0 和 1 的排序数组中查找 1 位置的解决方案

php - 重新排列数组以合并重叠结果

ios - NSPredicate 查找具有相同标签形式的 UIView self.view.subviews Swift

javascript - 欧拉项目 (Project Euler) 在 HackerRank 上的 JavaScript 中排名第一

scala - 使用 Reader Monad 进行依赖注入(inject)

javascript - JSONArray 创建后出现额外的数字