swift:将可选映射到数组的优雅方式

标签 swift

我正在寻找一种优雅的方式来映射 OptionalArray .我的意思是:

  • 如果Optional.none ,返回一个空的 Array<Wrapped>
  • 如果Optional.some , 返回单个元素 Array<Wrapped>

现在可以这样做了

let seq = value.map { [$0] } ?? []

不幸的是,当您想内联使用它时,这会变得非常难看和难以辨认。

是否有更好的方法来完成此操作,而无需编写 extension

最佳答案

如何将您的可选项放入一个数组中,然后 compactMap 该数组具有恒等函数?

[yourOptional].compactMap { $0 }

正如 Martin R 所建议的,您可以使用 CollectionOfOne 来保存一次性数组的创建,代价是多写几个字符:

CollectionOfOne(yourOptional).compactMap { $0 }

关于swift:将可选映射到数组的优雅方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61443814/

相关文章:

objective-c - Swift:实现协议(protocol)的类的类型

swift - 在 Swift 3 中将 C 数组 ptr 转换为原生数组

swift - 透明的 NSCollectionView 背景

ios - 如何将字符串中的整数数组转换为字符串数组?

swift - 在 Swift 3 中使用 SWXMLHash 反序列化一个类

mysql - 来自 MySQL 的 UITabbar 徽章值

ios - 无法使用 xcode 9 在 iphone 4s 模拟器上运行 UITest

ios - 当我想更改 `UISlider` 中的值时,scrollView 向左滚动而不是 slider

ios - UIAlertView 仅显示一次

ios - 按钮未快速显示