İki Nokta Sözdizimi
Coddy'nin Lua Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 3 / 70.
Her seferinde counter.increment(counter) yazmak yorucu ve hataya açıktır. Lua daha temiz bir yol sunar: iki nokta üst üste (:) operatörü.
Bir fonksiyonu iki nokta üst üste kullanarak tanımladığınızda, Lua otomatik olarak self ifadesini ilk parametre olarak ekler:
local player = {
name = "Hero"
}
-- Tanımlamada iki nokta üst üste kullanma
function player:greet()
print("Hello, I am " .. self.name)
endİki nokta üst üste işareti, fonksiyonu çağırırken de çalışır. Tabloyu otomatik olarak ilk argüman 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, self parametresini her iki uçta da —tanımlama sırasında ve çağrı sırasında— yönetir.
İşte her iki yaklaşımın da özdeş 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 üst üste sözdizimi (otomatik self)
function counter:decrement()
self.value = self.value - 1
end
counter:decrement()İki nokta üst üste sözdizimi, Lua'da metotları tanımlamanın ve çağırmanın standart yoludur. Kodunuzu daha kısa ve daha az tekrarlı hale getirir.
Görev
KolayGirdi olarak alacağınız bir değerle başlatılan message alanına sahip greeter adında bir tablo oluşturun.
Selamlamayı şu formatta yazdıran iki nokta üst üste sözdizimini (colon syntax) kullanarak bir :sayHello(name) metodu ekleyin:
[message], [name]!İki girdi alacaksınız:
greeter.messageiçinde saklanacak selamlama mesajı:sayHello()metoduna iletilecek bir isim
Metodu iki nokta üst üste sözdizimini kullanarak tanımlayın ve yine iki nokta üst üste sözdizimini kullanarak çağırın. Formatlanmış selamlamayı yazdırın.
Örneğin, mesaj Welcome ve isim Luna ise, çıktı şu şekilde olmalıdır:
Welcome, Luna!Kopya kağıdı
İki nokta üst üste (:) operatörü, self parametresini otomatik olarak işleyerek Lua'da metotları tanımlamak ve çağırmak için daha temiz bir sözdizimi sağlar.
Bir fonksiyonu iki nokta üst üste ile tanımlarken, self otomatik olarak ilk parametre olarak eklenir:
function player:greet()
print("Hello, I am " .. self.name)
endBir fonksiyonu iki nokta üst üste ile çağırırken, tablo otomatik olarak ilk argüman olarak geçirilir:
player:greet() -- player.greet(player) ile eşdeğerdirNokta sözdizimi ile iki nokta üst üste sözdiziminin karşılaştırılması:
-- Nokta sözdizimi (açık self)
function counter.increment(self)
self.value = self.value + 1
end
counter.increment(counter)
-- İki nokta üst üste sözdizimi (otomatik self)
function counter:decrement()
self.value = self.value - 1
end
counter:decrement()İki nokta üst üste sözdizimi, Lua'da metotları tanımlamanın ve çağırmanın standart yoludur; bu da kodu daha kısa ve daha az tekrarlı hale getirir.
Kendin dene
-- Girdiyi oku
local message = io.read()
local name = io.read()
-- YAPILACAK: 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 bir :sayHello(name) metodu 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.
Object Oriented Programming 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