如何在swift中传递参数Noobie的函数中更改外部变量
如何通过传递参数来更改函数内部的外部变量?;斯威夫特的Noobie如何在swift中传递参数Noobie的函数中更改外部变量,swift,function,variables,parameters,call,Swift,Function,Variables,Parameters,Call,如何通过传递参数来更改函数内部的外部变量?;斯威夫特的Noobie var varIsTrue:Bool = true import UIKit extension UIDevice { class ViewController: UIViewController { override func viewDidLoad() { changeVar(varIsTrue , false) } func changeVar(_ varName:? , _ arg:Bool
var varIsTrue:Bool = true
import UIKit
extension UIDevice {
class ViewController: UIViewController {
override func viewDidLoad() {
changeVar(varIsTrue , false)
}
func changeVar(_ varName:? , _ arg:Bool){
varName = arg // Xcode cannot assign to value: 'varName' is a 'let' constant
}
// varName:? Don't know if the question mark should be a :String some kind of argument or what?
}
}
假设您的示例只是一个抽象,并且您试图理解从函数中更改变量的概念,这将是一个解决方案 如注释中所述,您需要使用
inout
并传递“外部变量”的引用(由前导的&
指示)
varIsTrue=false有什么问题吗
?您可以使用inout@George_EvarITrue=false不会传递要更改的引用,它将获取函数上的参数。。正如aheze提到的,inout是2传递参考的方式参见Alex Goersin,他在@dinolin的例子中得到了很好的解释,我的意思是使用它而不是changeVar(varIsTrue,false)
。给出的答案与varIsTrue=false
的功能相同
var varIsTrue: Bool = true
changeVar(&varIsTrue , false)
func changeVar(_ property: inout Bool , _ arg: Bool){
property = arg
}