无法分配给参数

我已经声明了一个函数

func someFunction(parameterName: Int) { parameterName = 2 //Cannot assign to let value parameter Name var a = parameterName } 

并试图在运行时分配一个值,但它给了我错误“无法赋值让值参数名称”。

参数名称默认是常量? 我可以改变它为一个variables?

在此先感谢,Priyanka

[在Swift> = 3.0]函数参数被定义,如果通过let ,因此是常量。 如果您打算修改参数,您将需要一个本地variables。 因此:

 func someFunction (parameterName:Int) { var localParameterName = parameterName // Now use localParameterName localParameterName = 2; var a = localParameterName; } 

[在Swift <3.0]var声明参数,如下所示:

 func someFunction(var parameterName:Int) { parameterName = 2; var a = parameterName; } 

inout使用具有不同的语义。

[请注意,“可变参数”将在未来的Swift版本中消失。]下面是关于“可变参数”的Swift文档:

函数参数默认是常量。 试图从该函数体内更改函数参数的值会导致编译时错误。 这意味着你不能错误地改变参数的值。

但是,有时函数有一个参数值的variables副本可以使用。 您可以避免在函数中自己定义一个新variables,只需将一个或多个参数指定为variables参数即可。 variables参数可用作variables而不是常量,并为函数提供一个新的可修改参数值副本。

通过在参数名前添加关键字var:…来定义variables参数。

摘自:苹果公司“Swift编程语言”

如果你真的想改变存储在一个传入函数的位置的值,那么就像@conner指出的那样,一个inout参数是合理的。 这里是一个例子[ 在Swift> = 3.0 ]:

  1> var aValue : Int = 1 aValue: Int = 1 2> func doubleIntoRef (place: inout Int) { place = 2 * place } 3> doubleIntoRef (&aValue) 4> aValue $R0: Int = 2 5> doubleIntoRef (&aValue) 6> aValue $R1: Int = 4 

为了修改传入的参数,您必须将其指定为inout参数:

 func someFunction(inout parameterName:Int) { parameterName = 2; var a = parameterName; } 

注意这将改变传入的variables。 如果这不是你想要的,使用var作为GoZonerbuild议。