在定义的同一IBAction中使用未解析的标识符

时间:2018-07-14 11:27:31

标签: ios swift

因此,我是新手,不知道为什么它不能识别print(right_answer),即使它与声明在相同的IBAction函数中也是如此。

@IBAction func answer_three(_ sender: Any) {
    if randomnumber1 == 2  {
        var right_answer = true

    } else {
        let right_answer = true

    }
    //Error "Use of unresolved identifier 'right_answer' on line below
    print(right_answer)
}

如果您需要更多信息或代码,请告诉我。

1 个答案:

答案 0 :(得分:1)

每当您有花括号时,它就会定义一个本地范围。当您离开花括号时,您将退出该范围。如果在一组花括号内定义变量,则该变量仅存在于这些花括号内。

将变量right_answer的声明移到函数顶部,如下所示:

@IBAction func answer_three(_ sender: Any) -> Bool {
    var right_answer: Bool
    if randomnumber1 == 2  {
       right_answer = true
    } else {
       right_answer = true
    }
    print(right_answer)
    return right_answer
}

(您的原始代码在所有情况下都将right_answer设置为true,这没有多大意义。由于我不知道您要想要做什么,所以我采用了这种方式。)< / p>

请注意,变量right_answer仍是该函数的局部变量。退出函数时,该变量将超出范围,并且该变量不再存在。 (没关系,因为您关心的是函数的返回值。)

局部和全局范围的思想是编程的基础。您应该读一本有关编程的书。苹果的Swift编程iBook将是一个不错的选择。它从一开始就教您使用Swift进行编程。