Menu
CoddyTech

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)
end

Titik dua juga berfungsi saat memanggil fungsi. Titik dua secara otomatis meneruskan tabel sebagai argumen pertama:

player:greet()  -- output: Hello, I am Hero

Ini 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.

challenge icon

Tantangan

Mudah

Buat 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:

  1. Pesan sapaan yang disimpan di greeter.message
  2. 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 sapaan
quiz iconUji dirimu

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

Semua pelajaran di Pemrograman Berorientasi Object

Latihan sendiri: Compiler Lua online