【发布时间】:2017-09-01 17:16:03
【问题描述】:
如果我定义了以下枚举:
enum CardRank {
case number(Int)
case jack
case queen
case king
case ace
}
我知道I can use an if-let to check if it's a number:
let cardRank = CardRank.number(5)
if case .number = cardRank {
// is a number
} else {
// something else
}
不过,我不想使用 if 语句,而是想将“这是一个数字”的布尔结果分配给一个变量。
例如像这样:
let isNumber = (case .number = cardRank)
但是,这给了我编译器错误:
error: expected expression in list of expressions
let isNumber = (case .number = cardRank)
^
是否有类似的 1 行语法可以让这种分配工作?
我得到的最接近的是这个,但它很乱:
let isNumber: Bool = { if case .number = cardRank { return true } else { return false } }()
我知道我可以implement the Equatable protocol on my enum,然后执行以下操作:
let isAce = cardRank == .ace
但我正在寻找不需要遵守 Equatable 协议的解决方案。
【问题讨论】: