Kapsam ve Bloklar
Coddy'nin Lua Journey'sinin Fundamentals bölümünün bir parçası — ders 86 / 90.
Lua'da, do...end bloklarını kullanarak kodunuzun herhangi bir yerinde yeni kapsamlar oluşturabilirsiniz. Bu bloklar, yerel değişkenlerinize tam olarak nereden erişilebileceğini kontrol etmenize olanak tanıyarak değişken kapsamı üzerinde size hassas bir kontrol sağlar.
Bir do...end bloğu ile nasıl yeni bir kapsam oluşturabileceğiniz aşağıda gösterilmiştir:
local outerVar = "I'm outside"
do
local innerVar = "I'm inside"
print(outerVar) -- Bu çalışır
print(innerVar) -- Bu da çalışır
end
print(outerVar) -- Bu çalışır
print(innerVar) -- Bu bir hataya neden olur!Kapsamın (scope) güçlü yanı, farklı bloklarda aynı isme sahip yerel değişkenlere sahip olabilmenizdir ve bunlar tamamen ayrı kalırlar:
local name = "Alice"
do
local name = "Bob" -- Farklı değişken!
print(name) -- "Bob" yazdırır
end
print(name) -- "Alice" yazdırırHer bir do...end bloğu, yerel değişkenler için kendi izole ortamını oluşturur. Bir blok içinde tanımlanan değişkenler dış kapsama sızamazken, dış kapsamlardaki değişkenlere iç bloklardan erişilebilir.
Görev
KolayAynı isme sahip yerel değişkenlerin farklı kapsamlarda nasıl tamamen ayrı kaldığını göstermek için iç içe geçmiş do...end blokları oluşturun.
İlk olarak, dış kapsamda 10 değerine sahip playerLevel adında yerel bir değişken oluşturun ve bunu yazdırın.
Ardından bir do...end bloğu oluşturun ve içinde şunları yapın:
- Yine
playerLeveladında ve25değerine sahip yeni bir yerel değişken tanımlayın - Bu içteki
playerLeveldeğişkenini yazdırın
İçteki blok sona erdikten sonra, değişmeden kaldığını göstermek için dıştaki playerLevel değişkenini tekrar yazdırın.
bu, farklı kapsamlardaki aynı isimli yerel değişkenlerin tamamen bağımsız olduğunu gösterir; içteki değişken dıştakini etkilemez.
Kopya kağıdı
Değişken kapsamını kontrol etmek için do...end bloklarını kullanarak kodunuzun herhangi bir yerinde yeni kapsamlar oluşturun:
local outerVar = "I'm outside"
do
local innerVar = "I'm inside"
print(outerVar) -- Bu çalışır
print(innerVar) -- Bu da çalışır
end
print(outerVar) -- Bu çalışır
print(innerVar) -- Bu bir hataya neden olur!Farklı bloklardaki aynı isme sahip yerel değişkenler tamamen ayrı kalır:
local name = "Alice"
do
local name = "Bob" -- Farklı değişken!
print(name) -- "Bob" yazdırır
end
print(name) -- "Alice" yazdırırBir blok içinde bildirilen değişkenler dış kapsama çıkamazken, dış kapsamlardaki değişkenlere iç bloklardan erişilebilir.
Kendin dene
-- TODO: Kodunuzu buraya yazınBu 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çimlendirme11Tablolar 2: Sözlük Yapısı
Anahtar-Değer ÇiftleriSözlük Yapısında Tablolar OluşturmaErişim - Köşeli Parantez NotasyonuNokta Notasyonu ile ErişimÇift Ekleme ve Düzenlemenil ile Çiftleri KaldırmaÖzet - Öğe Özellikleri14Değişken Kapsamı
Global DeğişkenlerYerel DeğişkenlerNeden Yerel Değişken Kullanılır?Kapsam ve BloklarÖzet - Kapsam Bulmacası3Operatö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ı