Menu
Coddy logo textTech

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.

challenge icon

Görev

Kolay

Şunları içeren Rectangle adlı bir tür takma adı oluştur:

  • width türü number
  • height türü number
  • area: width * height döndüren (self: Rectangle) -> number yöntemidir
  • perimeter: 2 * (width + height) döndüren (self: Rectangle) -> number yö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):

  1. dikdörtgenin alanını
  2. dikdörtgenin çevresini
  3. 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
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