在浏览文档时,我遇到了以下代码部分。
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语句)是否合法,还是仅用于保护语句?
答案 0 :(得分:5)
,
与&&
几乎相同。
if 1 == 1, 2 == 2 {
print("dd")
}
if 1 == 1 && 2 == 2 {
print("dd")
}
上述两个if
语句都会打印dd
。
,
可以在任何可以使用&&
的地方使用,例如while
,if
和guard
。
但是,对于if let
或guard 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
button
是saveButton
还是
否则在第一个条件失败后它将return