İ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 zahmetli ve hataya açıktır. Lua daha temiz bir yol sunar: iki nokta üst üste (:) operatörü.
İki nokta kullanarak bir işlev tanımladığınızda Lua, ilk parametre olarak otomatik şekilde 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, işlev çağrılırken de çalışır. Tabloyu otomatik olarak ilk bağımsız değişken olarak geçirir:
player:greet() -- Çıktı: Hello, I am HeroBu, player.greet(player) yazmaya eşdeğerdir, ancak çok daha temizdir. İki nokta, self parametresini her iki uçta da ele alır: tanım sırasında ve çağrı sırasında.
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()İki nokta üst üste sözdizimi, Lua'da yöntemleri tanımlamanın ve çağırmanın standart yoludur. Kodunuzu daha kısa ve daha az tekrarlı hâle getirir.
Görev
Kolaygreeter adında, message alanı girdi olarak alacağınız bir değerle başlatılmış bir tablo oluşturun.
Karşılama mesajını şu biçimde yazdıran, iki nokta söz dizimini kullanarak bir :sayHello(name) metodu ekleyin:
[message], [name]!İki girdi alacaksınız:
greeter.messageiçinde saklanacak karşılama mesajı:sayHello()metoduna aktarılacak bir ad
Metodu iki nokta söz dizimini kullanarak tanımlayın ve iki nokta söz dizimini kullanarak çağırın. Biçimlendirilmiş karşılamayı yazdırın.
Örneğin, mesaj Welcome ve ad Luna ise çıktı şu şekilde 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 iki nokta üst üste sözdizimini kullanarak metodu ç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şisiKendi başına pratik yap: Online Lua derleyicisi