Jeśli
W najprostszej formie warunek if w schemacie ocenia test i na podstawie wyniku wykonuje jeden z dwóch możliwych bloków kodu. Najprostsza forma wygląda następująco:
(if test-is-true
do-this)- Jeśli
testma wartość true (#t), wykonywany jest blok kodu w następstwie. Blok może zwrócić wartość lub wykonać inne akcje, takie jak przypisanie zmiennej lub wydruk.
Przykład
(if (< 0 1)
(lumi-message "True!"))- W tym przypadku
testto(< 0 1)(sprawdzanie, czy 0 jest mniejsze niż 1). - Ponieważ test ma wartość true (
#t), wykonywany jest blok kodu(lumi-message "True!"), który wypisuje"True!".
Dodawanie warunku Else: if-else
Kiedy używasz warunku if z alternatywnym blokiem kodu (przypadek else), struktura wygląda następująco:
(if test
do-this
else-do-this)- Jeśli
testma wartość true (#t), wykonywany jest następujący blok kodu. - Jeśli
testma wartość false (#f), wykonywany jest alternatywny blok kodu.
(if test
consequent
alternative)Jak to działa
Wyrażenie testowe:
- Wyrażenie
testjest oceniane jako pierwsze.
- Wyrażenie
Wynik na podstawie testu:
- Jeśli
testma wartość true (#t), wykonywany jest kolejny blok kodu. - Jeśli
testma wartość false (#f), wykonywany jest alternatywny blok kodu.
- Jeśli
Zarówno bloki kodu consequent, jak i alternative mogą wykonywać dowolną prawidłową operację na schemacie, w tym zwracać wartości, modyfikować zmienne lub uruchamiać procedury.
Przykłady
Przykład 1: Zwracanie wartości
(if (< 0 1)
1
0)- Tutaj
testto(< 0 1)(sprawdzanie, czy 0 jest mniejsze niż 1). - Ponieważ wynik testu ma wartość true (
#t), wykonywany jest następujący blok (1) i zwracana jest jego wartość.
Wynik: 1
Przykład 2: Obliczanie bloku początkowego
W przypadkach, gdy musisz wykonać wiele akcji, gdy warunek jest prawdziwy lub fałszywy, możesz użyć begin lub let, aby zgrupować je razem.
(if (= 0 1)
(begin
(lumi-message "This won't run")
1)
(begin
(lumi-message "False condition met, calculating...")
(* 3 4)))- W tym przykładzie
testto(= 0 1)(sprawdzanie, czy 0 równa się 1). - Ponieważ wynik testu jest fałszywy (
#f), wykonywany jest blok alternatywny:- Najpierw drukuje
"False condition met, calculating...". - Następnie oblicza
(* 3 4)i zwraca12.
- Najpierw drukuje
Wynik: Wypisuje „Spełniono fałszywy warunek, obliczam…” i zwraca 12,
Przykład 3: Ocena instrukcji let
Użycie let pozwala nam zadeklarować zmienne o zasięgu lokalnym za pomocą bloku kodu.
(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)))- W tym przykładzie
testto(= 1 1)(sprawdzanie, czy 1 równa się 1). - Ponieważ wynik testu jest prawdziwy (
#t), wykonywany jest następujący blok:- Najpierw drukuje
"True condition met, calculating...". - Następnie oblicza
(* -1 10)i zwraca-10.
- Najpierw drukuje
Wynik: Wypisuje „Prawdziwy warunek spełniony, obliczanie…” i zwraca -10,
Podsumowanie- Warunek if jest potężnym narzędziem w schemacie do oceny testów i wykonywania odpowiednich bloków kodu.
- Może obsługiwać zarówno proste wyrażenia, jak i złożone bloki kodu, które zwracają wartości, modyfikują zmienne lub wykonują efekty uboczne.
- Pamiętaj: Jeśli nie ma wyraźnego bloku
else,ifocenia i wykonuje następnik tylko wtedy, gdy test jest prawdziwy. W przeciwnym razie ocenia i wykonuje alternatywę.