Menu
Coddy logo textTech

Self ve İki Nokta Metotları

Coddy'nin Lua Journey'sinin Luau'ya Giriş bölümünün bir parçası. Ders 43 / 73.

rect.area(rect) yazmak işe yarar, ancak Lua OOP'de daha önce öğrendiğin daha iyi bir yol var: iki nokta. rect:area() tamamen aynı çağrıdır: Lua, iki noktadan önceki tabloyu ilk bağımsız değişken olan self olarak otomatik şekilde geçirir.

İki nokta tanım yerinde de yardımcı olur. function account:deposit(amount) senin için self adlı gizli bir ilk parametre tanımlar:

type Account = {
    owner: string,
    balance: number,
    deposit: (self: Account, amount: number) -> (),
    getBalance: (self: Account) -> number,
}

local account = {owner = "Maya", balance = 1500}

function account:deposit(amount: number)
    self.balance += amount -- self örtüktür
end

function account:getBalance(): number
    return self.balance
end

Şeklin self'i açıkça tanımladığına dikkat et: deposit: (self: Account, amount: number) -> (). Oysa iki nokta, uygulamada bunu gizler. İki nokta bir sözdizimsel kolaylıktır; parametre hâlâ oradadır ve tür bunu açıkça belirtir. Hiçbir şey döndürmeyen bir metot, boş dönüş -> () ile türlendirilir.

Çağırma da zaten bildiğin aynı kuralı izler: account:deposit(250), account.deposit(account, 250) ile aynıdır. OOP bölümündekiyle aynı çalışma zamanı davranışı geçerlidir: Luau yalnızca üzerine türler ekler.

challenge icon

Görev

Kolay

Account adlı bir tür takma adı oluşturun ve şunları içersin:

  • owner türü string
  • balance türü number
  • deposit: (self: Account, amount: number) -> ()
  • getBalance: (self: Account) -> number

Sahibi "Maya" ve bakiyesi 1500 olan bir account tablosu oluşturun, ardından iki nokta üst üste tanımlama söz dizimini (function account:deposit(amount: number) …) kullanarak her iki yöntemi ekleyin. deposit, amount değerini bakiyeye ekler; getBalance geçerli bakiyeyi döndürür.

İki nokta üst üste çağrılarını kullanarak:

  1. bakiyeyi yazdırın
  2. 250 yatırın
  3. bakiyeyi tekrar yazdırın
  4. sahibini yazdırın

Kendin dene

-- Kodu buraya yaz
-- 1) Account tipini tanımla (metodlar tipte self'i açıkça alır)
-- 2) account tablosunu oluştur, sonra deposit/getBalance'ı iki nokta üst üste sözdizimiyle ekle
-- 3) balance'ı yazdır, 250 yatır, balance'ı tekrar yazdır, owner'ı yazdır
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Luau'ya Giriş bölümündeki tüm dersler

Kendi başına pratik yap: Online Lua derleyicisi