Menu
CoddyTech

Menambahkan method ke Bentuk

Termasuk bagian Pengantar Luau dalam perjalanan Lua di Coddy. Pelajaran 42 dari 73.

Dari bab OOP Lua, kamu tahu bahwa tabel dapat menyimpan fungsi, sama seperti nilai lainnya. Shape juga dapat mendeskripsikan field fungsi tersebut: mengubah shape 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 shape bahkan dapat merujuk pada dirinya sendiri:

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

Untuk mengimplementasikan shape, simpan fungsi di field tersebut dan berikan parameter self kepadanya:

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. Pelajaran berikutnya menghubungkan sintaks : dengan shape bertipe ini.

challenge icon

Tantangan

Mudah

Buat alias tipe bernama Rectangle dengan:

  • width bertipe number
  • height bertipe number
  • area: sebuah method (self: Rectangle) -> number yang mengembalikan width * height
  • perimeter: sebuah method (self: Rectangle) -> number yang mengembalikan 2 * (width + height)

Buat variabel rect bertipe Rectangle dengan width 4, height 6, dan kedua method diimplementasikan (ingat parameter self).

Cetak setiap nilai pada baris tersendiri (panggil method dengan sintaks titik, dengan meneruskan rect sebagai self):

  1. area persegi panjang
  2. perimeter persegi panjang
  3. width persegi panjang

Coba sendiri

-- Tulis kodemu di sini
-- 1) definisikan tipe Rectangle dengan dua field bertipe number dan dua method
-- 2) buat rect (width 4, height 6) yang mengimplementasikan kedua method
-- 3) cetak area, perimeter, dan width
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pengantar Luau

Latihan sendiri: Compiler Luau online