1
我使用像斯威夫特關閉改變
{ [capturedVar] otherVar in
// Some code here
}
關閉。當我試圖改變capturedVar捕獲變量,會出現一個錯誤,說這是一個持續的,不能改變。有沒有辦法改變閉包內的捕獲變量(我需要將原件更改爲,因此複製不是選項)?
我使用像斯威夫特關閉改變
{ [capturedVar] otherVar in
// Some code here
}
關閉。當我試圖改變capturedVar捕獲變量,會出現一個錯誤,說這是一個持續的,不能改變。有沒有辦法改變閉包內的捕獲變量(我需要將原件更改爲,因此複製不是選項)?
從Swift 2開始,捕獲的變量始終是常量,並且此行爲無法更改。
您可以關閉內改變變量這種方式(這是一種伎倆):
{ [capturedConst] otherVar in
var capturedVar = capturedConst
// Some code here
}
也都表示,要改變原來的變量,也:
在這種情況下,我建議您檢查inout
parameter definition或最終從閉包中返回新的已更改變量。
不要捕捉它... –
@MartinR,OMG,這麼簡單 –