Biçimlere Metot Ekleme
Coddy'nin Lua Journey'sinin Luau'ya Giriş bölümünün bir parçası. Ders 42 / 73.
Lua OOP bölümünden, tabloların diğer herhangi bir değer gibi işlevleri de tutabildiğini biliyorsun. Şekiller bu işlev alanlarını da açıklayabilir: bir şekli, veri ve davranıştan oluşan küçük bir sözleşmeye dönüştürür.
Bir yöntem alanı, işlevler bölümünde öğrendiğin işlev türü söz dizimini kullanır. İlk parametresi geleneksel olarak self olarak adlandırılır; bu, yöntemin ait olduğu tablodur ve şekil kendisine bile başvurabilir:
type Greeter = {
name: string,
greet: (self: Greeter) -> string,
}Şekli uygulamak için alana bir işlev kaydet ve bu işleve self parametresini ver:
local greeter: Greeter = {
name = "Ana",
greet = function(self: Greeter): string
return `Hello, I'm {self.name}`
end,
}Bu işlevi çağırmak, tabloyu self olarak kendin geçirmek anlamına gelir: greeter.greet(greeter). Yöntem, self aracılığıyla çağrıldığı tablonun alanlarını okur.
Tabloyu iki kez yazmak kullanışsız geliyor ve Lua'nın çözümünü zaten biliyorsun: iki nokta. Bir sonraki ders, : söz dizimini bu tür belirtilmiş şekillere bağlayacak.
Görev
KolayŞunları içeren Rectangle adlı bir tür takma adı oluştur:
widthtürünumberheighttürünumberarea:width * heightdöndüren(self: Rectangle) -> numberyöntemidirperimeter:2 * (width + height)döndüren(self: Rectangle) -> numberyöntemidir
Genişliği 4, yüksekliği 6 olan ve her iki yöntemi de uygulanmış ( self parametresini unutma) Rectangle türünde bir rect değişkeni oluştur.
Her birini kendi satırında yazdır (yöntemleri nokta söz dizimiyle çağır ve rect değerini self olarak geçir):
- dikdörtgenin alanını
- dikdörtgenin çevresini
- dikdörtgenin genişliğini
Kendin dene
-- Kodu buraya yaz
-- 1) iki sayı alanı ve iki metodu olan Rectangle tipini tanımla
-- 2) her iki metodu uygulayan rect oluştur (width 4, height 6)
-- 3) area, perimeter ve width 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