是否可以测试在切换字符串时rawValue是否可以初始化特定的枚举类型,而不是使用if?
static func getCurrency(from code: String) -> Currency? {
if let fiatCurrency = Fiat(rawValue: code) {
return fiatCurrency
} else if let cryptoCurrency = Blockchain(rawValue: code) {
return cryptoCurrency
} else {
return nil
}
}
这可能类似于类型转换,其中currency
符合我的货币协议:
switch currency {
case let fiatCurrency as Fiat:
return getFiatFormatting(for: value, fiatCurrency: fiatCurrency)
case let blockchain as Blockchain:
return getCryptoFormatting(for: value, blockchain: blockchain)
case let token as Token:
return getTokenFormatting(for: value, token: token)
default:
return nil
}
谢谢!
答案 0 :(得分:0)
如果我理解你想要的是什么,你可以使用nil合并算子而不是if let
。
static func getCurrency(from code: String) -> Currency? {
return Fiat(rawValue: code) ?? Blockchain(rawValue: code)
}
您可以根据需要添加任意其他可能的枚举初始化。它会按顺序进行评估,并返回第一个不是nil
的内容。如果全部为nil
,则返回nil
。因此,它与一系列if-let-else
具有完全相同的行为。