5 ms·
Swift actually passes value types by reference on closures (anonymous functions) if they aren't explicitly listed in capture group. It's per spec. It allows you
by GRiMe2D 2y ago
Swift actually passes value types by reference on closures (anonymous functions) if they aren't explicitly listed in capture group. It's per spec. It allows you to write closures with states:
var count = 0
let closure = {
count += 1
print("Current count=", count)
}
closure() // Current count= 1
closure() // Current count= 2
closure() // Current count= 3
let capturedVariableClosure = { [count] in
print("Current count=", count)
//count += 1 // syntax error, count is const variable. Use var count in capture group
}
capturedVariableCount() // Current count= 3
closure() // Current count= 4
capturedVariableCount() // Current count= 3
- jb1991 2y agoI think you meant to call your second closure `capturedVariableCount`