Menu
CoddyTech

Fungsi Anonim

Termasuk bagian Logika dan Alur dalam perjalanan Lua di Coddy. Pelajaran 13 dari 54.

Sekarang kamu memahami bahwa fungsi dapat disimpan dalam variabel dan diteruskan, ada cara yang lebih ringkas untuk menulisnya. Daripada selalu memberi nama pada fungsi, kamu dapat membuatnya langsung di tempat yang kamu perlukan. Fungsi ini disebut fungsi anonim.

Fungsi anonim adalah fungsi tanpa nama. Kamu mendefinisikannya dengan menggunakan kata kunci function, yang langsung diikuti parameter dan isi fungsi:

function(a, b)
    return a + b
end

Ini membuat nilai fungsi yang bisa langsung digunakan. Fungsi anonim sangat berguna saat meneruskan fungsi sebagai argumen ke fungsi lain. Ingat contoh pengurutan kustom sebelumnya? Berikut tampilannya dengan fungsi anonim:

local players = {
    {name = "Alice", score = 150},
    {name = "Bob", score = 200},
    {name = "Charlie", score = 175}
}

table.sort(players, function(a, b)
    return a.score > b.score
end)

Alih-alih mendefinisikan fungsi terpisah dengan nama untuk perbandingan, fungsi dibuat langsung sebagai argumen kedua untuk table.sort(). Ini membuat kode lebih ringkas dan menjaga logika pengurutan tepat di tempat penggunaannya.

challenge icon

Tantangan

Mudah

Tulis fungsi filterByThreshold yang menerima numbers dan threshold, lalu mengembalikan tabel baru yang hanya berisi angka yang lebih besar dari threshold.

Editor sudah memiliki fungsi pembantu, filter(list, keep): fungsi ini memanggil keep(value) untuk setiap nilai dan mengembalikan tabel baru yang berisi nilai-nilai yang membuat keep mengembalikan true. Panggil filter dan berikan pemeriksaannya sebagai fungsi anonim yang ditulis langsung dalam pemanggilan, seperti saat pelajaran memberikan fungsi ke table.sort(). Jangan simpan pemeriksaan itu dalam variabel atau memberinya nama.

Parameter:

  • numbers (table): Tabel bergaya list yang berisi nilai numerik
  • threshold (number): Nilai minimum (eksklusif) untuk penyaringan

Nilai kembalian: Tabel yang hanya berisi angka yang lebih besar dari threshold (table)

Coba sendiri

local function filter(list, keep)
    local result = {}
    for _, value in ipairs(list) do
        if keep(value) then
            table.insert(result, value)
        end
    end
    return result
end

function filterByThreshold(numbers, threshold)
    -- Tulis kodemu di sini
end
quiz iconUji dirimu

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

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler Lua online