Struct di Elixir
Penjelasan
Struct adalah map KHUSUS dengan struktur field yang TETAP dan nilai default, dideklarasikan lewat `defstruct` di dalam sebuah module. Berbeda dari map biasa, struct HARUS punya field yang sudah didefinisikan sebelumnya (tidak bisa menambah field baru sembarangan), dan punya nama tipe sendiri (`%NamaModule{}`) yang berguna untuk pattern matching.
Contoh Konsep
defmodule Siswa do
defstruct nama: "", nilai: 0
end
budi = %Siswa{nama: "Budi", nilai: 90}
IO.puts(budi.nama) # Budi
IO.puts(budi.nilai) # 90
# Update struct, menghasilkan struct BARU (immutable)
budiBaru = %Siswa{budi | nilai: 95}
IO.puts(budiBaru.nilai) # 95
Praktikum
Buat module Produk dengan defstruct nama dan harga (default 0), buat satu instance-nya, lalu buat versi baru dengan harga diubah.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Struct pada dasarnya adalah map dengan pembatasan field tambahan — semua fungsi `Map` (kecuali yang menambah key baru) tetap bisa dipakai pada struct, tapi pattern matching `%Siswa{}` memberi keamanan tipe tambahan yang tidak dimiliki map biasa.