Swift 在一行中返回关联的枚举值或 nil

问题描述 投票:0回答:1

Case 语句并不总是直观的,尤其是在 switch 语句之外。

是否可以在一行中返回枚举案例的关联值如果该案例匹配,否则返回 nil。这是代码:

struct Something<B> {
    enum Base {
        case common(B)
        case extended([B])
    }

    let base:Base

    var common:B? {
        switch base {
        case .common(let common) :
            return common
        default:
            return nil
        }
    }
}

看看

common
有很多样板只是为了返回 common 的关联值(如果存在)。我希望有与此类似的语法(甚至更简单):

var common:B? {
    return case base as .common(let common)
}

(目前使用 Swift 4)

ios swift swift4
1个回答
2
投票

这个有点短

var common: B? {
    if case let .common(common) = base { common } else { nil }
}
© www.soinside.com 2019 - 2024. All rights reserved.