保护条款中逗号的含义是什么?

时间:2018-02-24 03:45:20

标签: swift syntax

在浏览文档时,我遇到了以下代码部分。

    guard let button = sender as? UIBarButtonItem, button === saveButton else 
    {
        os_log("The save button was not pressed, cancelling", log: OSLog.default, type: .debug)
        return
    }

我对Swift相对了解,我对...UIBarButtonItem, button...的含义感到困惑。逗号,在这做什么?它是否充当逻辑和&&?这种语法对于swift中的所有控制结构(例如if语句)是否合法,还是仅用于保护语句?

2 个答案:

答案 0 :(得分:5)

,&&几乎相同。

if 1 == 1, 2 == 2 {
    print("dd")
}

if 1 == 1 && 2 == 2 {
    print("dd")
}

上述两个if语句都会打印dd

,可以在任何可以使用&&的地方使用,例如whileifguard

但是,对于if letguard let,由于左侧未返回Bool,因此无法使用&&且必须,使用。

error: test.playground:4:12: error: optional type 'String?' cannot be used as a boolean; test for '!= nil' instead
if let a = a && 2 == 2 {
           ^
           ( != nil)

答案 1 :(得分:1)

如果<=>,如果在内,则为,即嵌套If

让我们说let button = sender as? UIBarButtonItem

现在如果sender的类型为UIBarButtonItem,则会在,之后检查条件,即button === saveButton

buttonsaveButton还是

否则在第一个条件失败后它将return