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ü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.

challenge icon

Görev

Kolay

Aşağıdaki özelliklere sahip Rectangle adında bir tip takma adı (type alias) oluşturun:

  • number tipinde width
  • number tipinde height
  • areawidth * height döndüren bir (self: Rectangle) -> number metodu
  • perimeter2 * (width + height) döndüren bir (self: Rectangle) -> number metodu

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):

  1. dikdörtgenin alanı (area)
  2. dikdörtgenin çevresi (perimeter)
  3. 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
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