Kısa Devre Değerlendirmesi
Coddy'nin Lua Journey'sinin Temeller bölümünün bir parçası. Ders 23 / 90.
Lua, and ve or işleçlerini değerlendirirken kısa devre değerlendirmesi adı verilen bir kural kullanır. Bu, Lua’nın nihai sonucu öğrenir öğrenmez değerlendirmeyi durdurduğu ve ifadenin bazı bölümlerini tamamen atlayabileceği anlamına gelir.
and işleci için, ilk koşul false ise Lua, ikinci koşulu kontrol etmeden ifadenin tamamının false olacağını hemen bilir:
playerAlive = false
hasWeapon = true
canFight = playerAlive and hasWeapon
-- Lua yalnızca playerAlive değerini (false) kontrol eder, hasWeapon değerini asla değerlendirmezBenzer şekilde, or operatöründe ilk koşul true ise Lua sonucun true olacağını bilir ve ikinci koşulu atlar:
hasKey = true
hasPassword = false
canEnter = hasKey or hasPassword
-- Lua yalnızca hasKey değişkenini kontrol eder (true); hasPassword değişkenini asla değerlendirmezKısa devre değerlendirmesi yalnızca iş yükünü azaltmaz: hangi kodun çalışacağını da belirler. Burada ikinci kontrol yalnızca Lua, lives değeri nil olduğunda bu kontrolü atladığı için güvenlidir:
lives = nil -- henüz bir değer yok
canPlay = lives ~= nil and lives > 0
print(canPlay) -- falseKısa devre değerlendirmesi olmasaydı, lives > 0 programı bir hatayla durdururdu; çünkü nil, bir sayıyla karşılaştırılamaz. Bunu sık sık kullanacaksın: bir değeri kullanmadan önce mevcut olup olmadığını kontrol et.
Kendin dene
Bu ders bir kod alıştırması içermiyor.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Temeller bölümündeki tüm dersler
4Operatörler 2 İlişkisel ve Mantıksal
Eşitlik Operatörleriİlişkisel Operatörler'and' Operatörü'or' Operatörü'not' OperatörüKısa Devre DeğerlendirmesiTruthy ve Falsy DeğerlerÖzet - Basit Mantık10Tablolar Bölüm 1: Liste Stili
Tablo Nedir?Tablo Oluşturmaİndeks ile Elemanlara Erişmeİndeks ile Elemanları DeğiştirmeUzunluk Operatörü '#'table.insert()table.remove()Özet - Parti Üyelerini Yönetme13Proje: Basit İksir Dükkanı
Proje Kurulumuİksir Ekleme2Değişkenler ve Veri Tipleri
Değişken Nedir?SayılarStringlerBooleanlar'nil' Değeritype() Fonksiyonuİsimlendirme KurallarıÖzet - Karakter Profili5Temel Çıktı
Sabitleri YazdırmaDeğişkenleri YazdırmaBirden Fazla Değer YazdırmaMetinleri ve Değişkenleri Birleştirmetostring() FonksiyonuGirdiTip DönüşümüÖzet - Durum RaporuÖzet - 120'ye Kadar8String Manipülasyonu Temelleri
string.len()string.upper & string.lowerstring.sub()string.rep()string.find()Özet - Kullanıcı Adı Biçimlendirme3Operatörler 1 Aritmetik ve Birleştirme
Aritmetik OperatörlerMod Alma OperatörüÜs Alma OperatörüString BirleştirmeOperatör ÖnceliğiÖzet - Basit Hesaplamalar6Proje: Karakter İstatistiklerini Görüntüleme
Hoş Geldiniz MesajıKarakter İstatistiklerini Tanımlama9Fonksiyon Temelleri
Fonksiyon TanımlamaFonksiyon ÇağırmaParametreli FonksiyonlarÇoklu Parametreli Fonksiyonlar'return' İfadesiÖzet - Alan HesaplayıcıKendi başına pratik yap: Online Lua derleyicisi