这行代码返回哪里?

时间:2016-06-18 16:12:14

标签: swift

在下面的代码中,我对代码中的return语句返回的位置感到困惑?执行时,它按预期工作,但它返回到:

if userIsInTheMiddleOfTyping == true

还是回到:

if let digit = sender.currentTitle

以下是适用的完整代码块。

class ViewController: UIViewController {

private var userIsInTheMiddleOfTyping = false
private var decimalUsed = false

@IBAction private func touchDigit(sender: UIButton)
{
    if let digit = sender.currentTitle {

        if userIsInTheMiddleOfTyping == true {

            if digit == "." && decimalUsed == true {
                return   //where does this return to?
            } else if digit == "." && decimalUsed == false {
                decimalUsed = true
            }


            let textCurrentlyInDisplay = display.text!
            display.text = textCurrentlyInDisplay + digit

        } else {
            display.text = digit
        }

        userIsInTheMiddleOfTyping = true

    }
}

2 个答案:

答案 0 :(得分:3)

return总是从函数返回,所以在这种情况下它返回到调用touchDigit(...)的代码行

基本上,return只会停止执行touchDigit功能。

这意味着return之后的所有代码都不会运行

答案 1 :(得分:2)

return只会停止代码。如果您愿意,可以将其放入函数中。例如:

如果我只想在某个语句为真的情况下继续运行某些代码,那么你可以return该函数在错误的情况下停止它。

func something(a: Int, b: Int) {
    if a != b {
        return//Stops the code
    }
    //Some more code -- if a is not equal to b, this will not be called
}

请记住,这仅适用于void个功能。它也可以与其他人一起工作,但这略有不同。你必须随身携带一些东西。另一个例子:

func somethingElse(a: Int, b: Int) -> Bool{
    if a != b {
        return false //stops the code, but also returns a value
    }
    return true //Will only get called if a == b
}

在此函数中,返回Boolean。如果是!= b,则写入return false因为返回false而停止代码。

有关退货的详情,请访问Apple's documentation on functions.