我想知道是否有更优雅的方式来写这个:

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和提前返回,这将使它看起来更好。
我就是这样做的,

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/

10-12 04:57