Kısa Devre Değerlendirmesi
Coddy'nin Lua Journey'sinin Fundamentals bölümünün bir parçası — ders 23 / 90.
and ve or operatörleri, short-circuit evaluation (kısa devre değerlendirmesi) adı verilen akıllı bir optimizasyon kullanır. Bu, Lua'nın nihai sonucu bildiği anda değerlendirmeyi durdurması ve potansiyel olarak ifadenin bazı kısımlarını tamamen atlaması anlamına gelir.
and operatörü için, eğer ilk koşul false ise, Lua ikinci koşulu kontrol etmeden tüm ifadenin false olacağını hemen anlar:
playerAlive = false
hasWeapon = true
canFight = playerAlive and hasWeapon
-- Lua sadece playerAlive (false) değerini kontrol eder, hasWeapon değerini asla değerlendirmezBenzer şekilde, or operatörü için, eğer 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 sadece hasKey (true) değerini kontrol eder, hasPassword değerini asla değerlendirmezKopya kağıdı
Lua, and ve or operatörleri için nihai sonuç bilinir bilinmez değerlendirmeyi durduran kısa devre değerlendirmesi (short-circuit evaluation) yöntemini kullanır.
and operatörü için: eğer ilk koşul false ise, ikinci koşul asla değerlendirilmez:
playerAlive = false
hasWeapon = true
canFight = playerAlive and hasWeapon
-- Sadece playerAlive (false) kontrol edilir, hasWeapon atlanıror operatörü için: eğer ilk koşul true ise, ikinci koşul asla değerlendirilmez:
hasKey = true
hasPassword = false
canEnter = hasKey or hasPassword
-- Sadece hasKey (true) kontrol edilir, hasPassword atlanırKendin 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.
Fundamentals 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ı