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.
Görev
KolayAccount adlı bir tür takma adı oluşturun ve şunları içersin:
ownertürüstringbalancetürünumberdeposit:(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:
- bakiyeyi yazdırın
250yatırın- bakiyeyi tekrar yazdırın
- 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
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
1Luau ile Başlarken
Luau Nedir?Neden Luau Kullanılmalı?İlk Luau KodunuzTip Denetimi ve Hata ModlarıÖzet: Luau'ya Giriş4Fonksiyonlarla Çalışmak
Parametreleri ve Geri Dönüş Değerlerini TiplendirmeAnonim Fonksiyonları TiplendirmeHiçbir Şey Döndürmeyen Fonksiyonlarİsteğe Bağlı ParametrelerVarsayılan Parametre DeğerleriDeğişken Sayıda Parametre Alan Fonksiyonlar (Variadic)Fonksiyon Tiplerini TanımlamaÖzet: Tiplendirilmiş Fonksiyonlar2Temel Tipler
Temel Tipler: num, str, bool'any' Tipi: Kaçış Yolu'unknown' TipiNil ve İsteğe Bağlı (Optional) TiplerUygulamada Tip ÇıkarımıAçık Tip BelirteçleriÖzet: Temel Tipler Pratiği5Diğer Adlar (Aliases), Birleşimler, Kesişimler
İlkel Tipler için Tip Diğer Adları (Type Aliases)Birleşim Tipleri (Union Types)Birleşim Tipleri ile ÇalışmakLiteral (Sabit) TiplerKesişim Tipleri (Intersection Types)Tip Diğer Adlarını BirleştirmeÖzet: Gelişmiş Tip Kombinasyonları3Tipli Tablolar: Diziler ve Map'ler
Tipli DizilerEleman Ekleme ve OkumaMap Tipi Nedir?Map Bildirimi ve Map'lere ErişimTablolar Üzerinde YinelemeKarma Biçimli TablolarÇok Boyutlu Tipli Dizilertable.unpack ve VarargsÖzet: Diziler ve Map'ler6Tablo Biçimlerini Tiplendirme
Satır İçi Biçim AçıklamalarıBiçimler İçin Tip Takma Adlarıİsteğe Bağlı ÖzelliklerBiçimler ve Serbest TablolarBiçimleri GenişletmeBiçimlere Metot EklemeSelf ve İki Nokta MetotlarıÖzet: Tablo Biçimlerini TanımlamaKendi başına pratik yap: Online Lua derleyicisi