问题描述
如何通过传递参数来改变函数内部的外部变量?快速的Noobie
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
并传递“外部变量”的引用(由前导&
表示)。
var varIsTrue: Bool = true
changeVar(&varIsTrue,false)
func changeVar(_ property: inout Bool,_ arg: Bool){
property = arg
}