Comment

Comment by GRiMe2D

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
parent GRiMe2D 2 years ago

Discussion

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton