inout позволяет функции изменить переданное value и записать обратно вызывающему; вызов через &variable.
Разбор
- Не путать с передачей ссылки на class (class и так reference).
- Временное эксклюзивное заимствование (Law of Exclusivity).
- Нельзя передать computed property без setter в некоторых случаях.
- Полезен для swap/mutate in place.
Пример
func increment(_ x: inout Int) { x += 1 }
Итог
inout — явная мутация значения вызывающего с эксклюзивным доступом.