Fungsi sebagai Nilai
Simpan dan teruskan fungsi.
Fungsi sebagai Nilai adalah pelajaran Lua Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Lua Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Lua Academy mencakup 4 pelajaran total.
Fungsi Adalah Nilai Kelas Utama
Dalam Lua, fungsi adalah nilai kelas utama. Artinya, fungsi hanyalah data: Anda dapat menyimpannya dalam variabel, meneruskannya ke fungsi lain, mengembalikannya, dan menyimpannya dalam tabel.
Gagasan tunggal ini menjadi dasar seluruh pemrograman fungsional. Setelah memperlakukan fungsi seperti angka atau string, Anda dapat membangun alat yang fleksibel dan dapat digunakan kembali.
Menyimpan Fungsi dalam Variabel
Nama yang Anda berikan kepada sebuah fungsi sebenarnya hanyalah variabel yang menyimpan nilai fungsi tersebut. Anda dapat menetapkan nilai itu ke variabel lain dengan bebas.
Kedua nama di bawah menunjuk ke fungsi dasar yang sama, sehingga pemanggilan salah satunya menjalankan kode yang sama.
local function greet(name)
return "Hello, " .. name
end
local hi = greet
print(greet("Ada"))
print(hi("Lin"))Fungsi Anonim
Anda tidak memerlukan nama untuk membuat fungsi. Fungsi anonim ditulis dengan sintaks function ... end dan digunakan langsung sebagai nilai.
Menetapkan fungsi anonim ke variabel lokal sama dengan definisi fungsi biasa, hanya saja ditulis langsung di tempat penggunaannya.
local square = function(x)
return x * x
end
print(square(5))
print(square(9))Fungsi sebagai Argumen
Karena fungsi adalah nilai, Anda dapat meneruskannya ke fungsi lain. Fungsi yang menerima fungsi lain disebut fungsi tingkat tinggi.
Di sini, apply tidak mengetahui pekerjaan yang harus dilakukan sampai Anda memberinya fungsi untuk dijalankan.
local function apply(f, x)
return f(x)
end
local function double(n) return n * 2 end
print(apply(double, 10))
print(apply(function(n) return n + 1 end, 10))Mengembalikan Fungsi
Sebuah fungsi dapat mengembalikan fungsi lain. Dengan cara ini, Anda dapat membuat fungsi sesuai kebutuhan yang dikonfigurasi berdasarkan argumen yang Anda berikan.
Di bawah ini, multiplier membuat fungsi baru setiap kali dipanggil dan mengingat faktor yang Anda berikan.
local function multiplier(factor)
return function(x)
return x * factor
end
end
local triple = multiplier(3)
print(triple(4))
print(multiplier(10)(5))Penutupan Menangkap Variabel
Ketika fungsi yang dikembalikan menggunakan variabel lokal dari fungsi yang membungkusnya, fungsi tersebut menangkap variabel itu. Pasangan fungsi dan variabel yang ditangkap disebut penutupan.
factor yang ditangkap tetap hidup selama penutupan tersebut masih hidup, bahkan setelah pemanggilan fungsi luar selesai.
local function counter()
local n = 0
return function()
n = n + 1
return n
end
end
local next = counter()
print(next())
print(next())
print(next())Fungsi dalam Tabel
Tabel dapat menyimpan fungsi seperti halnya nilai lainnya. Beginilah cara Lua membangun modul dan objek: sebuah tabel memetakan nama ke nilai fungsi.
Anda dapat mencari fungsi berdasarkan kunci lalu memanggilnya, atau bahkan melakukan iterasi pada tabel operasi.
local ops = {
add = function(a, b) return a + b end,
sub = function(a, b) return a - b end
}
print(ops.add(2, 3))
print(ops["sub"](9, 4))Tabel Strategi
Menyimpan fungsi dalam tabel memungkinkan Anda memilih perilaku saat program berjalan berdasarkan kunci. Cara ini menggantikan rangkaian if-else yang panjang dengan pencarian yang rapi.
Memilih operasi berdasarkan nama membuat kode pemanggil tetap singkat dan mudah diperluas dengan kunci baru.
local dispatch = {
upper = string.upper,
lower = string.lower,
rev = string.reverse
}
local function run(name, s)
return dispatch[name](s)
end
print(run("upper", "lua"))
print(run("rev", "lua"))Fungsi Panggilan Balik
Fungsi panggilan balik adalah fungsi yang Anda teruskan agar dapat dipanggil nanti. Pustaka standar Lua menggunakan pola ini; misalnya, table.sort menerima fungsi pembanding.
Fungsi panggilan balik menentukan aturannya, sedangkan pustaka menangani perulangan dan pengaturan ulang.
local nums = {5, 2, 9, 1}
table.sort(nums, function(a, b)
return a > b
end)
print(table.concat(nums, ", "))Fungsi Memiliki Identitas
Setiap nilai fungsi adalah objek yang berbeda. Dua literal fungsi yang terpisah tidak pernah sama, meskipun berisi kode yang sama.
Namun, satu fungsi yang disimpan dalam dua variabel akan dibandingkan sebagai sama karena kedua nama tersebut merujuk ke nilai yang sama.
local f = function() return 1 end
local g = function() return 1 end
local h = f
print(f == g)
print(f == h)Mengapa Ini Penting
Memperlakukan fungsi sebagai nilai memungkinkan Anda menulis alat umum sekali saja dan menyesuaikannya dengan fungsi yang Anda teruskan. Pemetaan, penyaringan, penerapan parsial, dan komposisi semuanya bergantung pada hal ini.
Sisa kursus ini membangun pola-pola praktis di atas fungsi kelas utama dan penutupan.
Pemeriksaan Singkat
Uji pemahaman Anda tentang fungsi kelas utama dalam Lua.
Ringkasan
Fungsi dalam Lua adalah nilai kelas utama: simpan fungsi dalam variabel dan tabel, teruskan sebagai argumen, dan kembalikan dari fungsi lain.
Mengembalikan fungsi yang menangkap variabel lokal dari fungsi yang membungkusnya akan membuat penutupan. Gagasan-gagasan ini menjadi dasar setiap pola fungsional berikutnya.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Fungsi sebagai Nilai” gratis?
Ya — teks lengkap “Fungsi sebagai Nilai” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Lua Academy, upgrade ke CoddyKit PRO. Kursus Lua Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Fungsi sebagai Nilai”?
Simpan dan teruskan fungsi. Kamu berlatih Lua Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Lua Academy?
Tidak diperlukan pengalaman sebelumnya. Lua Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Fungsi sebagai Nilai” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Lua Academy ini?
Ya. Setiap pelajaran Lua Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Fungsi sebagai Nilai
- map, filter, reduce
- Aplikasi Parsial
- Menyusun Fungsi