Tabel dengan Fungsi
Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan Lua di Coddy. Pelajaran 1 dari 70.
Dalam Lua, tabel sangat serbaguna. Selain menyimpan data, tabel juga dapat menampung fungsi. Dengan begitu, kamu dapat mengelompokkan operasi yang saling berkaitan, sehingga kodemu tetap teratur dan mudah dikelola.
Untuk menempatkan fungsi di dalam tabel, kamu cukup menetapkannya ke sebuah kunci seperti nilai lainnya:
local myTable = {
greet = function(name)
return "Hello, " .. name
end
}
print(myTable.greet("Alice")) -- output: Hello, AliceKamu juga bisa mendefinisikan fungsi secara terpisah, lalu menambahkannya ke tabel:
local myTable = {}
myTable.greet = function(name)
return "Hello, " .. name
endAtau gunakan sintaks singkat yang lebih rapi:
local myTable = {}
function myTable.greet(name)
return "Hello, " .. name
endKetiga pendekatan menghasilkan hasil yang sama. Kamu memanggil fungsi menggunakan notasi titik: myTable.greet("Alice"). Pola menggabungkan fungsi dengan data ini adalah dasar pemrograman berorientasi objek di Lua.
Tantangan
MudahBuat tabel bernama calculator yang berisi empat fungsi aritmetika:
add(a, b)- mengembalikan jumlahadanbsubtract(a, b)- mengembalikan hasil penguranganadenganbmultiply(a, b)- mengembalikan hasil perkalianadanbdivide(a, b)- mengembalikan hasil pembagianadenganb
Kamu akan menerima tiga input:
- Nama operasi (salah satu dari:
add,subtract,multiply,divide) - Bilangan pertama
- Bilangan kedua
Panggil fungsi yang sesuai dari tabel calculator berdasarkan nama operasi, lalu cetak hasilnya.
Coba sendiri
-- Baca input
local operation = io.read()
local num1 = tonumber(io.read())
local num2 = tonumber(io.read())
-- TODO: Buat tabel calculator dengan empat fungsi:
-- add(a, b), subtract(a, b), multiply(a, b), divide(a, b)
-- TODO: Panggil fungsi yang sesuai dari tabel calculator menggunakan nama operasi
-- dan cetak hasilnyaPelajaran 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