Ios 在定义的同一iAction中使用未解析标识符
所以我是swift的新手,不知道为什么它不能识别printright\u答案,即使它和它的声明在同一个iAction函数中Ios 在定义的同一iAction中使用未解析标识符,ios,swift,Ios,Swift,所以我是swift的新手,不知道为什么它不能识别printright\u答案,即使它和它的声明在同一个iAction函数中 @IBAction func answer_three(_ sender: Any) { if randomnumber1 == 2 { var right_answer = true } else { let right_answer = true } //Error "Use of unresolve
@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)
}
如果您需要更多信息或代码,请告诉我。任何时候使用大括号,它都会定义一个局部范围。当您离开花括号时,您将退出该范围。如果在一组大括号内定义变量,则该变量仅存在于这些大括号内 将变量的声明向右移动到函数顶部,如下所示:
@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
}
您的原始代码在所有情况下都将正确答案设置为true,这没有多大意义。因为我不知道你想要它做什么,所以我就这样离开了
请注意,变量right_answer仍然是函数的局部变量。当您退出函数时,该变量超出范围,并且该变量不再存在。没关系,因为您关心的是函数的返回值
局部和全局范围的概念是编程的基础。你应该读一本关于编程的书。苹果的快速编程iBook将是一个不错的选择。它教您从一开始就使用Swift编程。您应该在if-else语句外声明right\u-answer,或者在if-else语句中编写print方法。您甚至可以编写let-right\u-answer:Bool,因为它实际上初始化为常量up。我考虑过这个建议,没错。我认为这是一个打字错误,这将扼杀本地范围的教训。