ios - Swift:写这个数组映射的更优雅的方式?

标签 ios arrays swift xcode

我想知道有没有更优雅的写法:

struct S {
    var state: [String: Any] 

    public var amounts: [Amount] {
        var result: [Amount] = []
        (self.state["amounts"] as? [Any]?)??.forEach({ a in
            result.append(Amount(a))
        })
        return result
    }      
}

struct Amount {
    init(_ any: Any?) {}
}

我尝试过使用 map 作为数组,但我找不到这样做的方法。

最佳答案

你也可以使用 guard let 和 early return,这样看起来会好一些。

我是这样做的

struct S {

    var state: [String: Any]

    public var amounts: [Amount] {
        guard let amounts = state["amounts"] as? [Any] else {
            return []
        }

        return amounts.map(Amount.init)
    }

}

关于ios - Swift:写这个数组映射的更优雅的方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56181269/

相关文章:

ios - 当我尝试将更长的文本放入其中时,UILabel 文本重置为非常小的字体大小

ios - 是否可以更改 NavigationButton 以显示图像而不是蓝色?

ios - Realm 列表 KVO 观察

ios - 使用 Swift 和 SpriteKit 实现 Applovin 广告

ios - 如何快速将 NSObject 值转换为 String?

ios - 图标已经包含光泽效果

ios - 无法分配给属性 'tabBarController' 是仅获取属性

c++ - 我认为我没有正确销毁动态内存

c# - 二维数组的问题

javascript - 动态调用 javascript 函数