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.
Tantangan
MudahBuat alias tipe bernama Rectangle dengan:
widthbertipenumberheightbertipenumberarea: sebuah method(self: Rectangle) -> numberyang mengembalikanwidth * heightperimeter: sebuah method(self: Rectangle) -> numberyang mengembalikan2 * (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):
- area persegi panjang
- perimeter persegi panjang
- 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
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pengantar Luau
1Memulai dengan Luau
Apa Itu Luau?Mengapa Menggunakan Luau?Kode Luau PertamamuPemeriksaan Tipe dan Mode ErrorRangkuman: Pengenalan Luau4Bekerja dengan Fungsi
Menentukan Tipe Parameter dan Nilai KembalianMenentukan Tipe Fungsi AnonimFungsi yang Tidak Mengembalikan NilaiParameter OpsionalNilai Default ParameterFungsi VariadikMendefinisikan Tipe FungsiRangkuman: Fungsi Bertipe2Tipe Inti
Tipe Dasar: num, str, boolTipe 'any': Jalan Keluar DaruratTipe 'unknown'Nil & Tipe OpsionalInferensi Tipe dalam PraktikAnotasi Tipe EksplisitUlasan: Latihan Tipe Inti5Alias, Union, dan Intersection
Alias Tipe untuk Tipe PrimitifTipe UnionMenggunakan Tipe UnionTipe LiteralTipe IntersectionMenggabungkan Alias TipeRekap: Kombinasi Tipe Lanjutan3Tabel Bertipe: array dan Map
array BertipeMenambahkan dan Membaca ElemenApa Itu Tipe Map?Mendeklarasikan dan Mengakses MapMelakukan Iterasi pada TabelTabel dengan Bentuk Campuranarray Bertipe Multidimensitable.unpack dan VarargsRingkasan: array dan Map6Pengetikan Bentuk Tabel
Anotasi Bentuk Secara InlineAlias Tipe untuk BentukProperty OpsionalBentuk vs. Tabel LonggarMemperluas BentukMenambahkan method ke BentukMethod self dan Method Titik DuaUlasan: Mendefinisikan Bentuk TabelLatihan sendiri: Compiler Luau online