【问题标题】:Setting multiple integers for "If" statement test value为“If”语句测试值设置多个整数
【发布时间】:2015-07-30 13:52:04
【问题描述】:

我试图在if 语句中为单个变量设置多个整数测试。逻辑运算符不能工作,因为它们必须是布尔值。

例如:

if self.nodeAtPoint(location) == self.fake {
    groundspeed = 35.0
    self.button1value++

    if(button1value == 2) {
      groundspeed = 5.0
    }

    if(button1value == 4){
        groundspeed = 5.0
    }

    if(button1value == 6) {
        groundspeed = 5.0
    }
}

目标是能够将显示的所有偶数放入一个if 语句中。

【问题讨论】:

    标签: swift if-statement logical-operators


    【解决方案1】:

    如果我们只想检查button1value 是否为偶数,我们可以使用模 (%) 运算符:

    if button1value % 2 == 0 {
        // button1value is even
        groundspeed = 5.0
    }
    

    如果我们要检查其他类型的集合,我们可以使用switch 语句:

    switch button1value {
        case 2,4,6:
            // button1value is 2, 4, or 6
            groundspeed = 5.0
        default:
            // button1value is something else
    }
    

    如果我们愿意,我们也可以使用 Swift 的 switch 语句做其他巧妙的技巧:

    switch (button1value % 2, button1value % 3) {
        case (0,0):
            // button1value is an even multiple of 3 (6,12,18...)
        case (0,_):
            // button1value is an even number not a multiple of three (2,4,8,10,14...)
        case (_,0):
            // button1value is an odd multiple of three (3,9,15,21...)
        default:
            // button1value is none of the above: (1,5,7,11...)
    }
    

    【讨论】:

      【解决方案2】:

      检查并接受 nhgrif 的答案以获得更好的变体。但是为了完整起见,如果您想保持自己的方式,可以使用逻辑 OR 运算符||

      if(button1value == 2 || button1value == 4 || button1value == 6) {
          groundspeed = 5.0
      }
      

      检查任何给定的布尔值是否为真。

      还有一个逻辑与运算符&&

      【讨论】:

        【解决方案3】:

        您可以使用contains 来检查多个值。只需传递一个包含您要测试的值和变量作为第二个参数的数组:

        if contains([2, 4, 6], button1value) {
            groundspeed = 5.0
        }
        

        【讨论】:

        • if-elseswitch 语句相比,它的效率如何? (但仍然赞成,因为contains() 肯定有时间和地点)
        • 是的,它会更慢,但除非您执行数千次,否则您可能不会注意到任何事情。
        • (或者数组中有大量元素。OP希望所有偶数记住。)
        • 显示的所有偶数仅表示 2、4 和 6。如果 OP 真的意味着 所有偶数,那么您的 % 2是迄今为止最好的解决方案。事实上,如果所有想要的数字都是偶数而其他的都是奇数,即使只有几个数字,我也会选择它。
        猜你喜欢
        • 1970-01-01
        • 2019-10-03
        • 1970-01-01
        • 2016-05-09
        • 2018-10-31
        • 2012-03-24
        • 1970-01-01
        • 1970-01-01
        • 2013-01-16
        相关资源
        最近更新 更多