Недавно я написал этот код, не задумываясь об этом:
myObject.myCollection.forEach { myObject.removeItem($0) }
где myObject.removeItem(_)
удаляет элемент из myObject.myCollection
.
Посмотрев на код сейчас, я озадачен тем, почему это работает, - не следует ли мне получать исключение по строкам Collection was mutated while being enumerated
?
Один и тот же код работает даже при использовании обычного цикла for-in!
Является ли это ожидаемым поведением или мне повезло, что он не сбой?