gpt4 book ai didi

swift - 在 Swift 的 bool 赋值中使用 `if-case` 格式?

转载 作者:搜寻专家 更新时间:2023-11-01 06:15:32 24 4
gpt4 key购买 nike

如果我定义了以下枚举:

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 语句,而是想将“这是一个数字吗”的 bool 结果分配给一个变量。

例如像这样:

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 协议(protocol)的解决方案。

最佳答案

将其添加为枚举的属性:

extension CardRank { 
var isNumber: Bool {
switch self {
case .number: return true
default: return false
}
}
}

let isNumber = cardRank.isNumber

关于swift - 在 Swift 的 bool 赋值中使用 `if-case` 格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46005134/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com