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

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

challenge icon

Görev

Kolay

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

  1. greeter.message içinde saklanacak karşılama mesajı
  2. :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ı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

Kendi başına pratik yap: Online Lua derleyicisi