Guard Clauses di Elixir
Penjelasan
Guard clause (`when kondisi`) menambahkan syarat tambahan pada function head atau case branch — dipakai kalau pattern matching bentuk saja belum cukup spesifik, dan butuh pengecekan NILAI juga. Hanya operator dan fungsi tertentu (built-in) yang boleh dipakai di dalam guard, bukan sembarang fungsi kustom.
Contoh Konsep
defmodule Kategori do
def umur(u) when u < 13, do: "Anak"
def umur(u) when u < 18, do: "Remaja"
def umur(_u), do: "Dewasa"
end
Kategori.umur(10) # "Anak"
Kategori.umur(16) # "Remaja"
Kategori.umur(25) # "Dewasa"
Praktikum
Buat module Predikat dengan fungsi dari(nilai) yang memakai guard when untuk mengembalikan "A" (nilai >= 85), "B" (nilai >= 70), atau "C" (selain itu).
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Guard clause TIDAK boleh memanggil fungsi kustom biasa (hanya fungsi tertentu dari daftar resmi Erlang/Elixir yang "bebas efek samping" dan aman dipanggil) — kalau butuh logika kompleks, hitung dulu di dalam body fungsi, bukan di guard.