Menu
CoddyTech

Ewaluacja z krótkim spięciem

Część sekcji Podstawy ścieżki Lua w Coddy. Lekcja 23 z 90.

Gdy Lua oblicza operatory and i or, stosuje regułę zwaną obliczaniem z krótkim spięciem. Oznacza to, że Lua przestaje obliczać wyrażenie, gdy tylko zna wynik końcowy, i może całkowicie pominąć jego części.

W przypadku operatora and, jeśli pierwszy warunek ma wartość false, Lua od razu wie, że całe wyrażenie będzie miało wartość false, i nie sprawdza drugiego warunku:

playerAlive = false
hasWeapon = true

canFight = playerAlive and hasWeapon
-- Lua sprawdza tylko playerAlive (false), nigdy nie oblicza wartości hasWeapon

Podobnie w przypadku operatora or, jeśli pierwszy warunek ma wartość true, Lua wie, że wynik będzie mieć wartość true, i pomija drugi warunek:

hasKey = true
hasPassword = false

canEnter = hasKey or hasPassword
-- Lua sprawdza tylko hasKey (true), nigdy nie sprawdza hasPassword

Ocena zwarciowa nie tylko oszczędza pracę: decyduje, który kod zostanie uruchomiony. Tutaj drugi warunek jest bezpieczny tylko dlatego, że Lua pomija go, gdy lives ma wartość nil:

lives = nil  -- jeszcze nie ma wartości

canPlay = lives ~= nil and lives > 0
print(canPlay)  -- false

Bez oceny zwarciowej lives > 0 przerwałoby działanie programu z błędem, ponieważ wartości nil nie można porównać z liczbą. Będziesz często z tego korzystać: sprawdzaj, czy wartość istnieje, zanim jej użyjesz.

Spróbuj swoich sił

Ta lekcja nie zawiera wyzwania z kodem.

quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator Lua online