【问题标题】:Using OR operand in a Swift ternary operator在 Swift 三元运算符中使用 OR 操作数
【发布时间】:2018-01-02 05:41:29
【问题描述】:

如何在三元运算符中使用 OR?这是我正在尝试做的事情:

let surname = name == "John" || "Jack" ? "Johnson" : "Smith"

【问题讨论】:

标签: ios swift ternary-operator


【解决方案1】:

使用括号,并在第二个比较条件中添加name ==,正如我在评论中首先提到的,这是适当的代码

let surname = (name == "John" ||  name ==  "Jack") ? "Johnson" : "Smith"

希望对你有帮助

【讨论】:

    【解决方案2】:

    使用括号:

    let surname = (name == "John" || name == "Jack") ? "Johnson" : "Smith"
    

    这些括号是必要的,因为您想先评估 nameJohn 还是 Jack,然后再将结果“传递”给三元运算符。

    此外,与所有类似 C 的语言一样,您必须提及 name 两次,这与您问题中的示例代码不同,以便将其与“John”和“Jack”进行比较。

    如果你想避免两次命名name,你可以改写:

    let surname = ["John", "Jack"].contains(name) ? "Johnson" : "Smith"
    

    后者利用了数组的contains()函数。

    【讨论】:

      【解决方案3】:

      除了括号,你还可以使用 array.contains 来处理名称很多的情况,这可能会使括号代码变长且不可读。

      let name = "Three"
      let nameList = ["One", "Two", "Three", "John", "Jack", "Vlatko"]
      let surname = ["John", "Jack"].contains(name) ? "Johnson" : "Smith"
      let surnameAlternate = nameList.contains(name) ? "Johnson" : "Smith"
      

      【讨论】:

        【解决方案4】:

        或者

        let surname = ["John", "Jack"].contains(name) ? "Johnson" : "Smith"
        

        【讨论】:

          【解决方案5】:

          请注意运算符优先级

          你应该使用括号来形成有效的条件。

          let surname = (name == "John" ||  name ==  "Jack") ? "Johnson" : "Smith"
          

          【讨论】:

            猜你喜欢
            • 2018-12-14
            • 1970-01-01
            • 2012-04-02
            • 1970-01-01
            • 2018-12-28
            • 1970-01-01
            • 2012-03-25
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多