Sintaks Titik Dua
Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan Lua di Coddy. Pelajaran 3 dari 70.
Menulis counter.increment(counter) setiap kali terasa merepotkan dan rentan menyebabkan kesalahan. Lua menyediakan cara yang lebih rapi: operator titik dua (:).
Saat kamu mendefinisikan fungsi menggunakan titik dua, Lua otomatis menambahkan self sebagai parameter pertama:
local player = {
name = "Hero"
}
-- Menggunakan titik dua dalam definisi
function player:greet()
print("Hello, I am " .. self.name)
endTitik dua juga berfungsi saat memanggil fungsi. Titik dua secara otomatis meneruskan tabel sebagai argumen pertama:
player:greet() -- output: Hello, I am HeroIni setara dengan menulis player.greet(player), tetapi jauh lebih rapi. Titik dua menangani parameter self di kedua sisi: saat definisi dan saat pemanggilan.
Berikut perbandingan yang menunjukkan kedua pendekatan menghasilkan hasil yang sama:
local counter = { value = 0 }
-- Sintaks titik (self ditulis secara eksplisit)
function counter.increment(self)
self.value = self.value + 1
end
counter.increment(counter)
-- Sintaks titik dua (self ditambahkan secara otomatis)
function counter:decrement()
self.value = self.value - 1
end
counter:decrement()Sintaks titik dua adalah cara standar untuk mendefinisikan dan memanggil method di Lua. Sintaks ini membuat kodemu lebih singkat dan tidak terlalu repetitif.
Tantangan
MudahBuat tabel bernama greeter dengan field message yang diinisialisasi dengan nilai yang akan kamu terima sebagai input.
Tambahkan method :sayHello(name) menggunakan sintaks titik dua yang mencetak sapaan dengan format berikut:
[message], [name]!Kamu akan menerima dua input:
- Pesan sapaan yang disimpan di
greeter.message - Nama yang diteruskan ke method
:sayHello()
Definisikan method menggunakan sintaks titik dua dan panggil method tersebut menggunakan sintaks titik dua. Cetak sapaan dengan format tersebut.
Misalnya, jika pesannya adalah Welcome dan namanya adalah Luna, output-nya seharusnya:
Welcome, Luna!Coba sendiri
-- Baca input
local message = io.read()
local name = io.read()
-- TODO: Tulis kodemu di bawah ini
-- 1. Buat tabel bernama 'greeter' dengan field 'message'
-- 2. Tambahkan method :sayHello(name) menggunakan sintaks titik dua
-- 3. Panggil method menggunakan sintaks titik dua untuk mencetak sapaanPelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Object
1Konsep "Self"
Tabel dengan Fungsi'self' EksplisitSintaks Titik DuaTitik vs Titik DuaRangkuman, Titik Bergerak4Proyek: Bank Digital
Penyiapan Proyekmethod Setoran7Polimorfisme & Overriding
Menimpa methodMemanggil method indukDuck TypingAntarmuka UmumMemeriksa TipeRingkasan: Peran Karyawan10Proyek: Pengelola Bentuk
Penyiapan Proyekclass Rectangleclass Circlemethod KelilingKumpulan BentukLuas TotalSaring Bentuk2Pola Prototype untuk class
Konsep PrototypeMenghubungkan dengan __indexKonstruktor :new()Menginisialisasi AtributInstans yang MandiriRangkuman: Pabrik Mobil5Pembebanan Operator dalam OOP
Menjumlahkan ObjekMengurangkan ObjekMenggabungkan ObjekMembandingkan Objek (<, >)Ulasan: Aritmetika Dompet8Enkapsulasi
Konvensi PenamaanClosure untuk PrivasiAkses melalui ClosureTabel Hanya-BacaLogika ValidasiRangkuman: Brankas Aman11Pola Desain (Ringan)
Fungsi FactoryTabel SingletonPola IteratorObserver (Listener)Rangkuman, Factory Logger3State dan Behavior pada object
Variabel InstansGetter methodSetter methodProperty TerhitungMemformat stringPemeriksaan KesetaraanRangkuman: Nilai Siswa6Dasar-Dasar Pewarisan
Menyiapkan PewarisanMewarisi methodMemperluas KonstruktorMenambahkan method untuk ChildSama vs UnikRangkuman: Hierarki BentukLatihan sendiri: Compiler Lua online