【发布时间】:2018-05-24 14:55:11
【问题描述】:
有没有一种优雅的方法可以通过 or 运算符组合两个 if let 语句。例如,我需要检查字符串“pass”、“true”或整数 1。下面的函数就是这样做的......
func test(content: Any) -> String {
if let stringValue = (content as? String)?.lowercased(),
["pass", "true"].contains(stringValue) {
return "You Passed"
}
if let numValue = (content as? Int),
1 == numValue {
return "YOU PASSED"
}
return "You Failed"
}
test(content: "Pass") //"You Passed"
test(content: 1) //"YOU PASSED"
结合这两个 if let 语句来处理传入的数据的最简单方法是什么?
【问题讨论】:
-
第二个
if let可以作为else if的情况添加到第一个,因为两者是互斥的。 -
理想情况下,您应该让函数仅返回
Bool,然后让第二个函数将其转换为String,但具有 3 个值,即使具有不同的类型表示相同,也似乎是设计问题本身。尽量避免Any。 -
"YOU PASSED" - 与 "You Passed" 不同,所以似乎不需要 OR 运算符。
标签: swift if-statement simplify any