if(变量赋值)语法查询(Swift)

if (variable assignment) syntax query (Swift)

我对这行到底是什么感到困惑,

if let fileList = fileList, let files = fileList.files 

正在做。如果我理解正确的话,一个条件语句只能有一个布尔值作为它的参数,所以

let fileList = fileList, let files = fileList.files

应该是真或假。该语法的具体作用是什么?

func updateDisplay() {
        updateButtons()
        
        if let fileList = fileList, let files = fileList.files {
            if files.count == 0 {
                output?.text = "Folder is empty"
                table?.isHidden = true
            } else {
                table?.isHidden = false
                table?.reloadData()
            }
        }
        else {
            output?.text = ""
            table?.isHidden = true
        }
        
    }
if let fileList = fileList, let files = fileList.files {

实际上是一个带有“null”测试的赋值语句。如果赋值成功,则执行大括号内的代码。 swift 中是否相等的布尔测试是 ==.

if 语句中使用的let a = b 语法称为可选绑定。您可以阅读更多相关信息 here。本质上,如果 b 为 nil,则条件被视为“假”。如果 b 不是 nil,则条件被视为“真”,非可选常量 a 现在将具有 b 所具有的值,您可以在 if 中使用它阻止。

Swift if 语句还允许您指定多个条件。对于要执行的 if 块,它们都必须为“真”。这些条件不必是布尔表达式。它们可以是以下任何一项:

  • 布尔表达式
  • 可选绑定
  • #available 检查
  • case 模式匹配

如果你有两个布尔表达式,并且你想 运行 一些代码,如果它们都为真,你 可以 使用 && 加入它们在一起,但如果您有 2 个要绑定的可选值,或一个布尔表达式和一个可选绑定,或以上的任意组合,则需要使用逗号分隔条件。