Ios 无法分配给参数
我已经声明了一个函数Ios 无法分配给参数,ios,swift,ios8,Ios,Swift,Ios8,我已经声明了一个函数 func someFunction(parameterName: Int) { parameterName = 2 //Cannot assign to let value parameter Name var a = parameterName } 并试图在运行时给它赋值,但它给了我一个错误 “无法分配给let value参数名称” 默认情况下,参数名称是否为常量?我可以将其更改为变量吗?要修改传入的参数,必须将其指定为inout参数: func so
func someFunction(parameterName: Int) {
parameterName = 2 //Cannot assign to let value parameter Name
var a = parameterName
}
并试图在运行时给它赋值,但它给了我一个错误
“无法分配给let value参数名称”
默认情况下,参数名称是否为常量?我可以将其更改为变量吗?要修改传入的参数,必须将其指定为inout参数:
func someFunction(inout parameterName:Int)
{
parameterName = 2;
var a = parameterName;
}
注意,这也将更改传入的变量。如果这不是您想要的,请按照GoZoner的建议使用var。[在Swift>=3.0中]函数参数的定义如同由
let
定义,因此是常量。如果要修改参数,则需要一个局部变量。因此:
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文档:
默认情况下,函数参数是常量。试图改变现状
函数体中函数参数的值
导致编译时错误。这意味着您无法更改
参数的错误值
但是,有时函数使用参数值的变量副本很有用。您可以避免定义
通过指定一个或多个
参数改为可变参数。可变参数为
作为变量而不是常量提供,并给出一个新的
函数工作时参数值的可修改副本
有
通过在参数名称前面加上关键字var:…”来定义变量参数
摘自:苹果公司《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
不清楚OP想要的是一个
inout
参数还是一个var
参数。在许多按值传递的语言中,值或参数变量可以在方法/函数中更改。不,这有一个副作用,即传入的任何变量都会被修改,这可能不是OP想要的,您可以在函数顶部添加行var parameterName=parameterName
。该声明会将参数隐藏起来,从而将paramaterName
变成var
。