Study
Elixir

Pattern Matching di Function Head

Penjelasan

Elixir mengizinkan sebuah fungsi didefinisikan dengan BEBERAPA clause (persamaan) berbeda, masing-masing untuk bentuk parameter yang berbeda — Elixir mencoba dari clause PALING ATAS, dan menjalankan clause pertama yang polanya cocok dengan argumen yang diberikan. Ini mirip pattern matching Haskell, sangat idiomatik di Elixir untuk mengganti if/else berjenjang.

Contoh Konsep

defmodule Deskripsi do
  def angka(0), do: "nol"
  def angka(1), do: "satu"
  def angka(_), do: "banyak"   # _ = wildcard, cocok apa saja
end

Deskripsi.angka(0)   # "nol"
Deskripsi.angka(5)   # "banyak"

defmodule Hasil do
  def proses({:ok, data}), do: "Sukses: #{data}"
  def proses({:error, alasan}), do: "Gagal: #{alasan}"
end

Praktikum

Buat module Sapaan dengan fungsi sapa/1 yang punya clause berbeda untuk "Budi" (mengembalikan sapaan khusus) dan clause default untuk nama lain (sapaan umum).

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Urutan clause SANGAT penting — clause yang lebih spesifik harus ditulis LEBIH DULU, clause dengan wildcard `_` sebagai fallback harus di PALING BAWAH, persis seperti pattern matching di Haskell.