В книге Мэтта Нойбурга iOS 13 Programming Fundamentals with Swift я наткнулся на следующие утверждения:
Когда вы прокручиваете последовательность с помощью for...in, вы на самом деле прокручиваете копию последовательности. Это означает, что безопасно изменять последовательность, пока вы прокручиваете ее:
И автор привел следующий пример для приведенных выше утверждений:
var s : Set = [1,2,3,4,5]
for i in s {
if i.isMultiple(of:2) {
s.remove(i)
}
} // s is now [1,3,5]
В приведенном выше примере мы видим, что исходный массив был изменен с [1,2,3,4,5,6] на [1,3,5]. Это означает, что сам массив был изменен. Таким образом, цикл for in
обрабатывал не копию исходного массива, а сам массив. Это, кажется, противоречит заявлениям автора выше.
Так что я не уверен, верны утверждения автора или нет. Кто-нибудь, пожалуйста, проясните этот вопрос? Большое спасибо.
Objective C
. - person user28434'mstep   schedule 06.07.2020s.remove(i)
удаляет элемент из множестваs
... - person Martin R   schedule 06.07.2020