作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以在切换字符串时测试特定枚举类型是否可以通过 rawValue 初始化,而不是使用 if let ?
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
遵守我的货币协议(protocol):
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
}
谢谢!
最佳答案
如果我正确理解您想要的内容,您可以使用 nil 合并运算符而不是 if let
。
static func getCurrency(from code: String) -> 货币? {
返回菲亚特(原始值:代码)?区 block 链(原始值:代码)
}
您可以根据需要添加任意数量的其他可能的枚举初始化。它将按顺序求值并返回第一个不为 nil
的值。如果全部为nil
,则返回nil
。因此,它与一系列 if-let-else
具有完全相同的行为。
关于ios - Swift - 从 switch 语句中的字符串初始化枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46730828/
我是一名优秀的程序员,十分优秀!