Menu
Coddy logo textTech

İ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 Hero

Bu, 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.

challenge icon

Görev

Kolay

Girdi 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:

  1. greeter.message içinde saklanacak karılama message
  2. :sayHello() method'una aktarılacak bir name

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ın
quiz iconKendini test et

Bu 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