Циклы по спискам и отображениям с range
Создавайте повторяющийся YAML из набора данных
«Циклы по спискам и отображениям с range» — бесплатный урок Helm Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Helm Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Helm Academy содержит 4 уроков всего.
Повторяйте без копирования
Когда значение содержит список, обычно не хочется вводить каждый элемент вручную. Действие range перебирает коллекцию и выводит YAML для каждого элемента.
Действие range
Цикл начинается с {{ range SOMETHING }} и завершается {{ end }}. Блок между ними выводится один раз для каждого элемента коллекции. 🔁
{{ range .Values.hosts }}
- host: {{ . }}
{{ end }}Точка становится элементом
Внутри range точка привязывается к текущему элементу, а не к корню. Поэтому {{ . }} выводит элемент, на котором находится текущая итерация.
hosts:
- api.example.com
- web.example.comПеребор простого списка
Для списка строк range выводит по одной строке YAML для каждого значения. В результате получается чистый список с динамическим размером, полностью управляемый значениями.
args:
{{ range .Values.flags }}
- {{ . }}
{{ end }}Индекс и значение
Нужно получить ещё и позицию? Сохраните оба значения в двух переменных. При каждой итерации range сначала передаёт индекс, а затем значение.
{{ range $i, $v := .Values.ports }}
# port {{ $i }} is {{ $v }}
{{ end }}Перебор карты
При переборе карты range передаёт в две переменные ключ и значение. Это идеально подходит для преобразования карты значений в метки или переменные окружения.
{{ range $key, $val := .Values.labels }}
{{ $key }}: {{ $val }}
{{ end }}Ключи карты сортируются
Helm перебирает ключи карты в алфавитном порядке, а не в порядке добавления. Благодаря этому результат рендеринга остаётся стабильным и удобным для сравнения между запусками.
Доступ к корню изнутри
Поскольку точка теперь указывает на элемент, внутри цикла .Values недоступен. Сначала сохраните корень с помощью $, чтобы по-прежнему иметь к нему доступ.
{{ range .Values.envs }}
name: {{ $.Release.Name }}-{{ . }}
{{ end }}Пустые списки ничего не выводят
Если коллекция пуста, range просто не выводит ничего и пропускает свой блок. Нет элементов — нет тела цикла, именно это Вам и нужно.
Следите за отступами
Каждая итерация должна быть выровнена под родительским ключом. В циклах часто используют помощник indent, чтобы повторяющийся YAML оказался на правильном уровне. 🧱
Объединение range с if
Вложите if внутрь range, чтобы фильтровать элементы во время перебора. Только элементы, прошедшие условие, выведут свой блок; остальные будут пропущены.
{{ range .Values.users }}
{{ if .active }}
- {{ .name }}
{{ end }}
{{ end }}Быстрая проверка
Вы перебираете список строк с помощью {{ range .Values.hosts }}.
Итоги
Теперь Вы умеете выполнять циклы с помощью range, читать элементы через изменённую точку, получать индекс или ключ и обращаться к корню через $. Повторы больше не проблема! 🎯
Часто задаваемые вопросы
Урок «Циклы по спискам и отображениям с range» бесплатный?
Да — полный текст урока «Циклы по спискам и отображениям с range» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Helm Academy, подпишись на CoddyKit PRO. Курс Helm Academy содержит 4 уроков всего.
Чему я научусь в уроке «Циклы по спискам и отображениям с range»?
Создавайте повторяющийся YAML из набора данных Ты практикуешь Helm Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Helm Academy?
Предыдущий опыт не требуется. Helm Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Циклы по спискам и отображениям с range»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Helm Academy?
Да. Каждый урок Helm Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Условные блоки с if и else
- Истинность и операторы в условиях
- Циклы по спискам и отображениям с range
- Ограничение области видимости блока с with