İki Nokta Sözdizimi
Coddy'nin Lua Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 3 / 70.
Her seferinde counter.increment(counter) yazmak sıkıcı ve hataya açıktır. Lua daha temiz bir yol sunar: iki nokta üst üste (:) operatörü.
Bir fonksiyonu iki nokta üst üste (Colon) kullanarak tanımladığınızda, Lua otomatik olarak ilk parametre olarak self ekler:
local player = {
name = "Hero"
}
-- Tanımda iki nokta üst üste kullanma
function player:greet()
print("Hello, I am " .. self.name)
endİki nokta üst üste işareti fonksiyon çağrılırken de çalışır. Tabloyu otomatik olarak ilk bağımsız değişken (argument) olarak geçirir:
player:greet() -- Çıktı: Hello, I am HeroBu, player.greet(player) yazmakla eşdeğerdir, ancak çok daha temizdir. İki nokta üst üste işareti, her iki tarafta da — hem tanımlama hem de çağrı sırasında — self parametresini otomatik olarak yönetir.
İşte her iki yaklaşımın da aynı sonuçları ürettiğini gösteren bir karşılaştırma:
local counter = { value = 0 }
-- Nokta sözdizimi (açık self)
function counter.increment(self)
self.value = self.value + 1
end
counter.increment(counter)
-- İki nokta sözdizimi (otomatik self)
function counter:decrement()
self.value = self.value - 1
end
counter:decrement()make `Colon` `syntax`, Lua'da `method` `definition` ve `Call` işlemlerinin standart yoludur. Kodunuzu daha kısa ve daha az tekrarlayıcı hale getirir.
Görev
KolayGirdi olarak alacağınız bir değerle başlatılan bir message alanına sahip greeter adında bir table oluşturun.
Colon syntax kullanarak karılama mesajını şu biçimde yazdıran bir :sayHello(name) method'u ekleyin:
[message], [name]!İki input alacaksınız:
greeter.messageiçinde saklanacak karılamamessage'ı:sayHello()method'una aktarılacak birname
method'u colon syntax kullanarak tanımlayın ve colon syntax kullanarak çağırın. Biçimlendirilmiş karılama mesajını print ile yazdırın.
Örneğin, message Welcome ve name Luna ise, Output şöyle olmalıdır:
Welcome, Luna!Kendin dene
-- Girdiyi oku
local message = io.read()
local name = io.read()
-- TODO: Kodunuzu aşağıya yazın
-- 1. 'message' alanına sahip 'greeter' adında bir tablo oluşturun
-- 2. İki nokta üst üste sözdizimini kullanarak :sayHello(name) metodunu ekleyin
-- 3. Selamlamayı yazdırmak için metodu iki nokta üst üste sözdizimiyle çağırınBu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Nesne Yönelimli Programlama bölümündeki tüm dersler
1'Self' Kavramı
Fonksiyonlu TablolarAçık 'self'İki Nokta SözdizimiNokta vs İki NoktaÖzet - Hareket Eden Nokta4Proje: Dijital Banka
Proje KurulumuPara Yatırma Metodu7Çok Biçimlilik ve Geçersiz Kılma
Metotları Geçersiz KılmaÜst Sınıf Metotlarını ÇağırmaDuck TypingOrtak ArayüzTür KontrolüÖzet - Çalışan Rolleri2Sınıf Prototip Kalıbı
Prototip Kavramı__index ile Bağlama:new() KurucusuÖznitelikleri BaşlatmaBağımsız ÖrneklerÖzet - Araba Fabrikası5OOP'de Operatör Aşırı Yükleme
Nesneleri ToplamaNesneleri ÇıkarmaNesneleri BirleştirmeNesneleri Karşılaştırma (<, >)Özet - Cüzdan Matematiği8Kapsülleme
Adlandırma KurallarıGizlilik için Closure'larClosure'lar Aracılığıyla ErişimSalt Okunur TablolarDoğrulama MantığıÖzet - Güvenli Kasa11Tasarım Kalıpları (Lite)
Fabrika FonksiyonlarıSingleton TablosuIterator KalıbıObserver (Dinleyici)Özet - Logger Fabrikası3Nesne Durumu ve Davranışı
Örnek DeğişkenleriGetter MetotlarıSetter MetotlarıHesaplanmış ÖzelliklerString BiçimlendirmeEşitlik KontrolleriÖzet - Öğrenci Notu6Kalıtımın Temelleri
Kalıtım KurulumuMetot KalıtımıConstructor'ı GenişletmeAlt Sınıf Metotları EklemePaylaşılan ve BenzersizÖzet - Şekil Hiyerarşisi