Mapping di Solidity
Penjelasan
Mapping (`mapping(KeyType => ValueType)`) adalah struktur data key-value paling FUNDAMENTAL di Solidity — dipakai di HAMPIR SEMUA kontrak untuk menyimpan saldo per alamat, kepemilikan token, atau data lain yang di-lookup berdasarkan key. Berbeda dari dictionary di bahasa lain, mapping TIDAK punya `.length` dan TIDAK BISA di-iterasi (di-loop) — kamu harus tahu key-nya untuk mengakses value, atau simpan daftar key terpisah kalau perlu iterasi.
Contoh Konsep
contract Token {
mapping(address => uint256) public saldo;
function setor(uint256 jumlah) public {
saldo[msg.sender] += jumlah; // msg.sender = alamat pemanggil function
}
function cekSaldo(address akun) public view returns (uint256) {
return saldo[akun]; // key yang belum pernah diisi otomatis bernilai 0
}
}
Praktikum
Buat contract dengan mapping(address => bool) public sudahVoting, dan function vote() yang menandai msg.sender sudah voting (set true).
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Key mapping yang BELUM PERNAH diisi otomatis bernilai default (0 untuk uint, false untuk bool, dst) — TIDAK melempar error seperti mengakses key yang tidak ada di dictionary bahasa lain. Ini nyaman tapi juga bisa menyembunyikan bug kalau kamu lupa key-nya memang belum pernah diisi.