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ünüzden tabloların tıpkı diğer değerler gibi fonksiyonları da tutabildiğini biliyorsunuz. Şekiller de bu fonksiyon alanlarını tanımlayabilir — böylece bir şekli küçük bir veri ve davranış sözleşmesine dönüştürür.
Bir metot alanı, fonksiyonlar bölümünde öğrendiğiniz fonksiyon tipi sözdizimini kullanır. İlk parametresi geleneksel olarak self olarak adlandırılır — metodun ait olduğu tablo — ve şekil kendisine bile başvurabilir:
type Greeter = {
name: string,
greet: (self: Greeter) -> string,
}Şekli uygulamak (implement) için, alanda bir fonksiyon saklayın ve ona self parametresini verin:
local greeter: Greeter = {
name = "Ana",
greet = function(self: Greeter): string
return `Hello, I'm {self.name}`
end,
}Onu çağırmak, tabloyu self olarak kendiniz geçirmek anlamına gelir: greeter.greet(greeter). self aracılığıyla metot, hangi tablo üzerinde çağrıldıysa o tablonun alanlarını okur.
Tabloyu iki kez yazmak hantal hissettirir — ve Lua'nın çözümünü zaten biliyorsunuz: iki nokta üst üste (colon). Bir sonraki ders : sözdizimini bu tiplendirilmiş şekillerle bağlaştırır.
Görev
KolayAşağıdaki özelliklere sahip Rectangle adında bir tip takma adı (type alias) oluşturun:
numbertipindewidthnumbertipindeheightarea—width * heightdöndüren bir(self: Rectangle) -> numbermetoduperimeter—2 * (width + height)döndüren bir(self: Rectangle) -> numbermetodu
Genişliği 4, yüksekliği 6 olan ve her iki metodu da uygulanmış Rectangle tipinde bir rect değişkeni oluşturun (self parametresini unutmayın).
Aşağıdakileri her biri ayrı bir satırda olacak şekilde yazdırın (metotları nokta sözdizimi ile çağırın ve self olarak rect geçirin):
- dikdörtgenin alanı (
area) - dikdörtgenin çevresi (
perimeter) - dikdörtgenin genişliği (
width)
Kendin dene
-- Buraya kod yazın
-- 1) iki sayı alanı ve iki metoda sahip Rectangle tipini tanımla
-- 2) her iki metodu uygulayan rect oluştur (width 4, height 6)
-- 3) area, perimeter ve width değerlerini 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