Сообщение "(x times)" на самом деле не говорит о том, сколько раз строка выполняется в oop.
Думайте об этом так, иногда игровая площадка хочет выводить несколько сообщений на той же строке, потому что две вещи оцениваются в этой строке. Это чаще всего случается в циклах, где в каждой итерации оценивается новая вещь, и XCode хочет отобразить это в той же строке, но не может, поэтому может отображать только «(2 раза)».
Вы также можете видеть, что это происходит в других местах, например, замыкания, которые находятся на той же строке:
let x = Optional.some(1).map { $0 + 1 }.map { String($0) } // (3 times)
Здесь оцениваются 3 вещи:
Другой пример:
func f() { print("x");print("y") } // (2 times)
f()
Обычно каждый оператор print
будет иметь несколько текст отображается справа, не так ли? Но так как они находятся в одной строке, Xcode может показывать только «(2 раза)».
В этом случае происходит то же самое:
var arr2 = [34, 92, 84, 78, 90, 42, 5, 89, 64, 32, 30].prefix(while: {$0.isMultiple(of: 2)})
Необходимо оценить 8 вещей. Результат закрытия оценивается 7 раз, плюс один раз для значения arr2
.
Если вы поместите объявление переменной и замыкание в отдельные строки, то Xcode может показать значение переменная в отдельной строке, поэтому в двух других случаях число на единицу меньше.
Чтобы проиллюстрировать это графически:
![enter image description here](https://i.stack.imgur.com/9YyrRm.png)
Вы заставляете Xcode объединить два коробочных сообщения в одну строку. XCode не может втиснуть весь этот текст в одну строку, поэтому лучшее, что он может сделать, это "(8 раз)".