Вложенные условия
Иногда одного условия мало. Сначала нужно проверить одно, а потом — внутри этой проверки — ещё одно. Например: сначала убедиться, что перед черепашкой есть блок, а потом — какой именно это блок.
Это называется вложенными условиями — одно if находится внутри другого.
Базовый пример
Каждый уровень вложенности отступает правее. Это называется индентацией — без неё в глубоко вложенном коде быстро теряешься.
Отступы — не украшение, а необходимость
Посмотри, насколько сложнее читать код без отступов:
Каждый новый уровень — 4 пробела или один Tab. Придерживайся этого всегда.
Когда вложенность — сигнал упростить код
Если условий больше двух-трёх уровней — это обычно знак, что код можно написать чище. Один из способов — ранний выход через return или break:
Второй вариант называют guard clauses (охранные выражения). Сначала проверяем всё, что может пойти не так, и выходим — а потом пишем основную логику без вложенности.
Объединение через and
Иногда вложенные условия можно заменить одним and:
Но это работает только если оба условия независимы и тебе не нужно разное поведение для каждого случая.
Практический пример: система безопасности
🚀 Задания
Задание 1
Напиши функцию safeStep(): сначала проверь топливо (если 0 — вернись с false), потом проверь блок впереди (если лава — вернись с false), иначе сделай шаг и вернись с true.
Задание 2 Перепиши этот код с глубокой вложенностью через guard clauses:
Задание 3
Напиши проверку инвентаря: пройдись по слотам 1–16, для каждого слота получи данные через turtle.getItemDetail(slot). Если слот не пуст — выведи имя предмета и количество.
Задание 4
Добавь к предыдущей задаче вложенную проверку: если найден предмет с именем "minecraft:diamond" — выведи отдельное сообщение "Алмазы в слоте " .. slot .. "!" и останови цикл.
Задание 5 Напиши программу с тремя уровнями проверки: 1) есть ли сигнал редстоуна спереди; 2) если есть — проверь уровень топлива; 3) если топлива достаточно — начни движение. На каждом уровне выводи соответствующее сообщение.