Menu
CoddyTech

Menambahkan method ke Bentuk

Termasuk bagian Pengantar Luau dalam perjalanan Lua di Coddy. Pelajaran 44 dari 80.

Dari bab OOP Lua, kamu tahu bahwa tabel dapat menyimpan fungsi seperti nilai lainnya. Bentuk juga dapat mendeskripsikan field fungsi tersebut: mengubah bentuk menjadi kontrak kecil yang mencakup data dan perilaku.

Field method menggunakan sintaks tipe fungsi yang kamu pelajari di bab fungsi. Parameter pertamanya secara konvensional bernama self, yaitu tabel tempat method tersebut berada, dan bentuknya bahkan dapat merujuk ke dirinya sendiri:

type Greeter = {
    name: string,
    greet: (self: Greeter) -> string,
}

Untuk menerapkan bentuk tersebut, simpan fungsi di dalam field dan berikan parameter self:

local greeter: Greeter = {
    name = "Ana",
    greet = function(self: Greeter): string
        return `Hello, I'm {self.name}`
    end,
}

Memanggilnya berarti kamu sendiri yang meneruskan tabel sebagai self: greeter.greet(greeter). Melalui self, method membaca field dari tabel mana pun tempat method itu dipanggil.

Menulis tabelnya dua kali terasa merepotkan, dan kamu sudah tahu solusi Lua: titik dua. Di pelajaran berikutnya, kamu akan menghubungkan sintaks : dengan bentuk bertipe ini.

challenge icon

Tantangan

Mudah

Beri sebuah bentuk persegi panjang method yang menghitung luasnya.

  1. Tulis type Rectangle = {width: number, height: number, area: (self: Rectangle) -> number}.
  2. Buat local rect: Rectangle dengan width 4, height 6, dan area = function(self: Rectangle): number yang mengembalikan self.width * self.height.
  3. Cetak rect.area(rect), lalu rect.width.

Tekan Jalankan: output menampilkan 24 dan 4.

Coba sendiri

-- 1) buat type Rectangle dengan width, height, dan method area
-- 2) buat local rect: Rectangle (width 4, height 6) dengan area yang sudah diimplementasikan
-- 3) gunakan print untuk menampilkan area, lalu width

Semua pelajaran di Pengantar Luau

Latihan sendiri: Compiler Luau online