Выход из цикла, пропуск шага цикла или break и continue в Swift

Если в ios-приложении (и не только) используются массивы большой размерности, то перебор элементов этих массивов может быть затратной с точки зрения ресурсов и производительности операцией. Однако не всегда нужно перебирать все элементы массива от начала до конца.

Для оптимизации работы приложения, внутри которого происходит перебор с помощью цикла, можно использовать следующие приемы:

1. Выход из цикла

Из цикла  вы может выйти в любое время с помощью оператора break:

//
//  proSwift.ru
//

var found = false
var count = 0

for item in array {
    if item == search {
        found = true
        count++
        break
    }
}

Как только цикл найдет элемент item, который удовлетворяет условию поиска search, он изменит значение переменной found и увеличит значение счетчика count на 1. А после этого прекратит дальнейший перебор элементов массива array, использую оператор break. В итоге, если в массиве есть элемент, удовлетворяющий условиям поиска,  значение count будет равно 1, и более оно не изменится.  Вы нашли то, что вы искали и если  не имеет никакого смысла смотреть на другие объекты в этом массиве (которых могут быть сотни), вы используете break.

Существует также оператор continue, который работает отлично от break. Оператор не выходит из цикла, но сразу же переходит к следующей итерации (следующему шагу).

//
//
//  proSwift.ru
//

var found = false

for item in array {
    if item == search {
        count++
        continue
        found = true
        print("Found!")
    }
}

В этом примере цикл переберет все элементы, и после его выполнения переменная count  будет равна количеству элементов в массиве array, удовлетворяющих условию поиска search. Но переменная found никогда не примет значение true, и функция print() также не сработает. Как только исполнение программы дойдет до оператора continue, шаг цикла завершится, и начнется следующий шаг с новым элементом item.

Добавить комментарий

Ваш адрес email не будет опубликован.

*

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.