代码之家  ›  专栏  ›  技术社区  ›  mrkot

两个if语句+和else,以及一个if语句、一个if语句和一个else之间的区别?

  •  -1
  • mrkot  · 技术社区  · 6 年前

    我使用这些语句在进度条上设置进度,具体取决于 seconds 变量。下面的函数每1秒由计时器对象调用一次。7秒钟后, refreshApp() 调用函数。

    func runTimedCode() {
    
        if seconds == 0 {
            self.progressView.setProgress(Float(self.seconds)/Float(7), animated: false)
            refreshApp()
            seconds += 1
        }
        else if seconds == 7 {
            self.progressView.setProgress(Float(self.seconds)/Float(7), animated: false)
            seconds = 0
        } else {
            self.progressView.setProgress(Float(self.seconds)/Float(7), animated: false)
            seconds += 1
        }
    }
    

    它按应该的方式工作,但当我把第二个语句 if seconds == 7 { 而不是 else if seconds == 7 ,进度条似乎不是从一个完全空的位置开始的(从7秒时完全填充跳到1秒时有一点填充)。

    有人能帮我理解为什么行为会改变吗?谢谢您!

    1 回复  |  直到 6 年前
        1
  •  2
  •   vacawama    6 年前

    当你改变 else if seconds == 7 进入之内 if seconds == 7 ,您将输入第一个代码块 第三个代码块时 seconds 0 .如果你使用 否则,如果秒数=7 然后是整个 if 语句执行一次 if seconds == 0 是满意的。

    let seconds = 0
    
    if seconds == 0 {
        print("block 1")
    }
    else if seconds == 7 {
        print("block 2")
    } else {
        print("block 3")
    }
    
    block 1
    
    if seconds == 0 {
        print("block 1")
    }
    if seconds == 7 {
        print("block 2")
    } else {
        print("block 3")
    }
    
    block 1
    block 3