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.
Tantangan
MudahBeri sebuah bentuk persegi panjang method yang menghitung luasnya.
- Tulis
type Rectangle = {width: number, height: number, area: (self: Rectangle) -> number}. - Buat
local rect: Rectangledengan width4, height6, danarea = function(self: Rectangle): numberyang mengembalikanself.width * self.height. - Cetak
rect.area(rect), lalurect.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
1Memulai dengan Luau
Apa Itu Luau?Mengapa Menggunakan Luau?Kode Luau PertamamuPemeriksaan Tipe dan Mode ErrorRangkuman: Pengenalan Luau4Bekerja dengan Fungsi
Mengetik Parameter dan Nilai KembalianMengetik Fungsi AnonimFungsi Tanpa Nilai KembalianParameter OpsionalNilai Parameter DefaultNilai Default untuk BooleanFungsi VariadikMendefinisikan Tipe FungsiUlasan: Fungsi Bertipe2Tipe Inti
Number, String, dan BooleanTipe 'any': Jalan KeluarTipe 'unknown'Nil dan 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 & map
Array BertipeMenambahkan dan Membaca ElemenApa Itu Tipe Map?Mendeklarasikan dan Mengakses MapMenelusuri TabelTabel dengan Bentuk CampuranMembaca GridMembuat Gridtable.unpackRangkuman: 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