在 Swift 中将 IF LET 与 OR 结合起来

Cal*_*cki 5 if-statement simplify any swift

有没有一种优雅的方法可以通过 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"
Run Code Online (Sandbox Code Playgroud)

组合这两个 if let 语句来处理传入的数据的最简单方法是什么?

Dun*_*n C -1

显然,我在回答这个问题时心烦意乱,没有仔细阅读。不,您编写一个带有 2 个可选绑定语句的表达式if let,其中只有一个为 true。

你不能说

如果让 x = y 让 a = b

似乎最干净的方法是使用 else:

if let x = y { code }
else if let a = b { other code } 
Run Code Online (Sandbox Code Playgroud)

之前的答案没有回答所提出的问题:

是的,您可以组合多个 if let 语句:

var x: Int? = 1
var y: String? = ""
var z = 2

if let x = x,
  let y = y,
  z == 2 {
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

仅当 x 和 y 不为零(且 z == 2)时才会执行上面的 if 块

更好的是,每个后续的if let可选绑定都可以使用您用前一个if let.

  • 您使用 AND 运算符而不是 Or,无法将 if let 与 Or 运算符组合。 (2认同)