【发布时间】:2017-07-10 09:51:41
【问题描述】:
case 语句并不总是直观的,尤其是在 switch 语句之外。
是否可以在一行中返回枚举案例的关联值仅如果该案例匹配,否则为零。代码如下:
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)
【问题讨论】:
-
或类似的东西:
return (case .common(let common) = base)对于我正在尝试做的事情来说仍然有点冗长。