Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在swift中传递参数Noobie的函数中更改外部变量_Swift_Function_Variables_Parameters_Call - Fatal编程技术网

如何在swift中传递参数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

如何通过传递参数来更改函数内部的外部变量?;斯威夫特的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
并传递“外部变量”的引用(由前导的
&
指示)


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
}