Menu
Coddy logo textTech

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

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

challenge icon

Görev

Kolay

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

  1. greeter.message içinde saklanacak selamlama mesajı
  2. :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)
end

Bir 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ğerdir

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

Bu 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