问题描述
我有一个enum
,它返回了一个string
和发送的parameter
ID。但是由于我只使用一种情况,所以没有理由使用switch
。所以问题是,如何在不使用switch
的情况下返回与下面相同的内容?
enum MyEnum {
case myCase(id: Int)
var description: String {
switch self {
case .myCase(let id):
return "myCase\(id)"
}
}
}
我尝试这样做:
var description: String {
return "myCase\(id)"
}
,但无法识别ID。在先前的代码中,我使用了let id
,但此处不能使用。 (作为附带说明,我不能说我了解如何使用let id
并返回parameter
创建时发送的let id
会创建一个新变量,不是吗?)
解决方法
说实话,这不是最好的解决方案。您可能会忘记其他情况。更好地使用switch case
enum MyEnum {
case myCase(id: Int)
var description: String {
if case let .myCase(id: id) = self {
return "myCase\(id)"
}
return "unknown case"
}
}
使用guard
enum MyEnum {
case myCase(id: Int)
var description: String {
guard case let .myCase(id: id) = self else {
return "unknown case"
}
return "myCase\(id)"
}
}
如果您添加了新的保护套而忘记了它,也可以将return "unknown case"
替换为fatalError("uknown case")