Выбор ответа Middle Функции, замыкания, генераторы обновлено

Статическая переменная функции

Вопрос

Что выведет код?

function counter(): int {
    static $n = 0;
    return ++$n;
}
echo counter(), ' ', counter(), ' ', counter();

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: 1 2 3. static $n = 0 инициализируется один раз и сохраняет значение между вызовами функции в рамках запроса.

Варианты ответа

  1. 1 1 1
  2. 0 1 2
  3. 1 2 3правильный ответ
  4. Ошибку: static нельзя внутри функции

Разбор

static $n = 0 инициализируется один раз и сохраняет значение между вызовами функции в рамках запроса. Каждый вызов увеличивает и выводит её: 1, 2, 3. Обычная локальная переменная дала бы 1 1 1. Статические переменные часто используют для простого мемоизирования.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.