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)
这个有点短
var common: B? {
if case let .common(common) = base { common } else { nil }
}