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 çalışır, ancak Lua OOP dersinde daha iyi bir yol öğrenmiştiniz: colon (iki nokta üst üste). rect:area() tam olarak aynı çağrıdır — Lua, colon işaretinden önceki table değerini ilk bağımsız değişken olan self olarak automatically geçirir.
Colon işareti, define aşamasında da yardımcı olur. function account:deposit(amount), sizin için self adında gizli bir ilk parametre bildirir:
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 (shape) self parametresini explicitly — deposit: (self: Account, amount: number) -> () — bildirdiğine dikkat edin; colon işareti bunu uygulamada gizlese bile. Colon bir sözdizimi şekeridir; parametre hâlâ oradadır ve type bunu açıkça belirtir. Hiçbir şey döndürmeyen bir methods, boş dönüş değeri olan -> () ile tiplendirilir.
Çağırma işlemi zaten bildiğiniz kuralla aynıdır: account:deposit(250) ifadesi account.deposit(account, 250) ile birebir aynıdır (same). OOP bölümünüzdeki ile aynı çalışma zamanı davranışı — Luau sadece üstüne tipleri ekler.
Görev
KolayAşağıdaki özelliklere sahip Account adında bir type tür takma adı (type alias) oluşturun:
stringtüründeownernumbertüründebalancedeposit—(self: Account, amount: number) -> ()getBalance—(self: Account) -> number
Owner değeri "Maya" ve balance değeri 1500 olan bir account tablosu (table) oluşturun, ardından colon definition sözdizimini (syntax) kullanarak her iki metodu da ekleyin (function account:deposit(amount: number) …). deposit, bakiye bilgisine amount miktarını ekler; getBalance ise güncel bakiyeyi return eder.
Colon calls kullanarak:
- bakiyeyi
printedin 250miktarındadeposityapın- bakiyeyi
again(tekrar)printedin ownerdeğeriniprintedin
Kendin dene
-- Buraya kod yazın
-- 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) bakiyeyi yazdır, 250 yatır, bakiyeyi tekrar yazdır, sahibi 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ımlama