Fungsi sebagai Nilai Kelas Satu
Termasuk bagian Logika dan Alur dalam perjalanan Lua di Coddy. Pelajaran 12 dari 54.
Dalam Lua, fungsi bukan sekadar blok kode yang menjalankan tugas. Fungsi adalah nilai yang dapat diperlakukan seperti tipe data lainnya. Artinya, kamu dapat menggunakan fungsi dengan cara yang sama seperti menggunakan angka, string, atau tabel.
Kamu dapat menyimpan fungsi dalam variabel:
local greet = function()
print("Hello!")
end
greet() -- output: Hello!Di sini, fungsi ditetapkan ke variabel greet, dan kamu bisa memanggilnya seperti fungsi biasa. Ini membuka banyak kemungkinan menarik untuk menyusun kodemu.
Fungsi juga dapat diteruskan sebagai argumen ke fungsi lain. Ini sangat berguna ketika kamu ingin satu fungsi menggunakan perilaku yang ditentukan dalam fungsi lain:
function executeAction(action)
action()
end
local sayHello = function()
print("Hello from a function!")
end
executeAction(sayHello) -- output: Hello from a function!Dalam contoh ini, executeAction menerima fungsi sebagai parameter dan memanggilnya. Fungsi sayHello diteruskan seperti kamu meneruskan angka atau string.
Fungsi bahkan dapat mengembalikan fungsi lain. Ini memungkinkan kamu membuat fungsi secara dinamis berdasarkan kondisi atau parameter tertentu:
function createMultiplier(factor)
return function(number)
return number * factor
end
end
local double = createMultiplier(2)
print(double(5)) -- output: 10Tantangan
MudahTulis fungsi applyOperation yang menerima a, b, dan operation, lalu mengembalikan hasil penerapan fungsi operasi pada kedua angka tersebut.
Parameter operation adalah tabel yang berisi fungsi yang akan dipanggil dengan a dan b sebagai argumen.
Logika:
- Ambil fungsi dari tabel
operationmenggunakan kunci"func" - Panggil fungsi tersebut dengan
adanbsebagai argumen - Kembalikan hasilnya
Parameter:
a(angka): Angka pertamab(angka): Angka keduaoperation(tabel): Tabel yang berisi fungsi yang disimpan dengan kunci"func"
Nilai yang dikembalikan: Hasil pemanggilan fungsi operasi dengan a dan b (angka)
Coba sendiri
function applyOperation(a, b, operation)
-- Tulis kodemu di sini
end
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Iterasi Tabel Tingkat Lanjut
Iterasi dengan pairs()Iterasi dengan ipairs()pairs() vs. ipairs()Rangkuman: Lembar Karakter2Fungsi library tabel Lainnya
table.concat()Pembuatan tabel & unpack()table.sort()Pengurutan Kustom dengan FungsiRangkuman, Papan Skor Tertinggi3Konsep Fungsi Tingkat Lanjut
Mengembalikan Beberapa NilaiFungsi Variadik (...)Fungsi sebagai Nilai Kelas SatuFungsi AnonimApa Itu Closure?Ulasan: Penangan Event SederhanaLatihan sendiri: Compiler Lua online