if
У найпростішій формі умовний оператор if у Scheme оцінює тест і на основі результату виконує один із двох можливих блоків коду. Найпростіша форма виглядає так:
(if test-is-true
do-this)- Якщо
testістинний (#t), виконується блок коду в гілці consequent. Блок може повертати значення або виконувати інші дії — наприклад присвоєння змінної або вивід.
Приклад
(if (< 0 1)
(lumi-message "True!"))- Тут
test—(< 0 1)(перевірка, чи 0 менше 1). - Оскільки тест істинний (
#t), виконується(lumi-message "True!"), який виводить"True!".
Додавання гілки else: if-else
Коли if має альтернативний блок коду (гілку else), структура така:
(if test
do-this
else-do-this)- Якщо
testістинний (#t), виконується блок consequent. - Якщо
testхибний (#f), виконується блок alternative.
(if test
consequent
alternative)Як це працює
Тестовий вираз:
- Спочатку обчислюється вираз
test.
- Спочатку обчислюється вираз
Результат за тестом:
- Якщо
testістинний (#t), виконується блок consequent. - Якщо
testхибний (#f), виконується блок alternative.
- Якщо
Обидва блоки можуть виконувати будь-яку дійсну операцію Scheme — повертати значення, змінювати змінні або запускати процедури.
Приклади
Приклад 1: повернення значення
(if (< 0 1)
1
0)- Тест
(< 0 1)істинний, тому виконується блок1і повертається 1.
Приклад 2: блок begin
Коли потрібно виконати кілька дій, використовуйте begin або let:
(if (= 0 1)
(begin
(lumi-message "This won't run")
1)
(begin
(lumi-message "False condition met, calculating...")
(* 3 4)))- Тест
(= 0 1)хибний, тому виконується alternative:- спочатку виводиться
"False condition met, calculating..."; - потім обчислюється
(* 3 4)і повертається12.
- спочатку виводиться
Результат: виводить “False condition met, calculating…” і повертає 12.
Приклад 3: вираз let
let дозволяє оголосити локальні змінні в блоці коду:
(if (= 1 1)
(let (x -1)
(lumi-message "True condition met, calculating...")
(* x 10))
(let (y 4)
(lumi-message "This won't run")
(* 3 y)))- Тест
(= 1 1)істинний, тому виконується consequent:- виводиться
"True condition met, calculating..."; - обчислюється
(* -1 10)і повертається-10.
- виводиться
Результат: виводить “True condition met, calculating…” і повертає -10.
Підсумок
if— потужний інструмент Scheme для оцінки тестів і виконання відповідних блоків коду.- Він працює як з простими виразами, так і зі складними блоками, що повертають значення, змінюють змінні або мають побічні ефекти.
- Якщо явної гілки
elseнемає,ifвиконує consequent лише коли тест істинний; інакше виконується alternative.