这是我的代码:
public enum Result<T> {
case succes(data: T), error(resultError: ResultError)
// Is this possible without the switch?
public var error: ResultError? {
switch self {
case .succes(_):
return nil
case .error(let resultError):
return resultError
}
}
}
public enum ResultError: Int {
case someError = -777
}
我想知道是否可以通过某种方式检查self
是否可以有条件地转换为大小写error
并返回该值,否则返回nil,而无需进行切换。
我尝试使用Guard语句,但失败:
guard let _error = self as? Result.error
答案 0 :(得分:3)
别忘了有if case
语句,它以类似if
的样式进行模式匹配:
public var error: ResultError? {
if case .error(let e) = self {
return e
} else {
return nil
}
}
使用开关没有错。我认为它比if case
更好,而且可读性更好。