Study
Elixir

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.

Editor Latihan

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.