是否可以在同一条件语句中使用来自可选绑定的变量?

A O*_*A O 2 if-statement swift optional-binding

if let popupButton = result?.control as? NSPopUpButto {
    if popupButton.numberOfItems <= 1 {
        // blahblah
    }
}
Run Code Online (Sandbox Code Playgroud)

我想避免双重嵌套如果。

if let popupButton = result?.control as? NSPopUpButton && popupButton.numberOfItems <= 1 {}
Run Code Online (Sandbox Code Playgroud)

但是unresolved identifier如果我这样做,我会得到编译器错误。

有没有办法在一行上实现这个条件?或者因为我使用的是可选绑定,我是否被迫在if此处进行嵌套?

Mo *_*eed 5

你可以这样做:

if let popupButton = result?.control as? NSPopUpButton, popupButton.numberOfItems <= 1 {
    //blahblah
}
Run Code Online (Sandbox Code Playgroud)

  • `,` 用于形成*多子句条件*。这曾经是通过 `where` 关键字完成的;如果您使用 `where` 而不是逗号,错误消息会提到使用 `,` 来形成多子句条件。所以我猜这是 Swift 的术语。 (5认同)