Swift闭包更改捕获的变量

时间:2016-07-21 16:43:19

标签: swift lambda reference closures

我正在使用关闭

{ [capturedVar] otherVar in
    // Some code here
}

当我尝试更改captureVar时,会出现一个错误,说它是常量且无法更改。有没有办法在闭包内更改捕获的变量(我需要将原件更改为,所以复制不是一个选项)?

1 个答案:

答案 0 :(得分:0)

从Swift 2开始,捕获的变量始终是常量,并且无法更改此行为。

您可以通过这种方式更改闭包中的变量(这是一种技巧):

{   [capturedConst] otherVar in
    var capturedVar = capturedConst
    // Some code here
}

您还表示您也希望更改原始变量:

在这种情况下,我建议您检查inout parameter definition,或者最终从关闭中返回新更改的变量。