0Pricing
Web3 & DApp Development Fundamentals · Pelajaran

Tipe Referensi

array, struct, mapping

Tipe Referensi adalah pelajaran Web3 & DApp Development Fundamentals gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Web3 & DApp Development Fundamentals, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Web3 & DApp Development Fundamentals mencakup 4 pelajaran total.

Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.

What Are Reference Types?

Reference types describe data that is too large to fit in one slot, so variables refer to a location rather than holding the data directly.

The three reference types are arrays, structs, and mappings. When you use them you must think about their data location: storage, memory, or calldata.

Fixed-Size Arrays

A fixed-size array has a length set at compile time and cannot grow. The type uint[3] always holds exactly three values.

Use .length to read the size. Out-of-bounds access reverts.

<code>uint[3] public scores = [10, 20, 30];

function first() public view returns (uint) {
    return scores[0];
}</code>

Dynamic Arrays

A dynamic array can grow and shrink. Declare it as uint[]. In storage you can push to append and pop to remove the last element.

<code>uint[] public nums;

function add(uint n) public {
    nums.push(n);
}

function removeLast() public {
    nums.pop();
}</code>

Bytes and String

bytes is a dynamically-sized byte array and string is its UTF-8 text cousin. Both are reference types.

Note: string has no .length or indexing; convert to bytes first to inspect raw bytes.

<code>string public name = 'Alice';

function nameLength() public view returns (uint) {
    return bytes(name).length;
}</code>

Defining Structs

A struct groups related variables into one custom type. It is ideal for modeling entities like users, orders, or tokens.

<code>struct User {
    string name;
    uint256 balance;
    bool active;
}</code>

Using Structs

You can create a struct with positional or named arguments and store it. Reading a struct from storage gives you a reference you can modify.

<code>User public owner;

function setup(string memory n) public {
    owner = User({ name: n, balance: 0, active: true });
}</code>

Mappings

A mapping is a key-value store, like a hash table. It is one of the most used structures in smart contracts, for example tracking balances per address.

Keys are not stored, so you cannot iterate a mapping or get its length.

<code>mapping(address => uint256) public balances;

function deposit() public payable {
    balances[msg.sender] += msg.value;
}</code>

Nested Mappings

Mappings can be nested to model relationships, such as allowances where one owner permits multiple spenders.

This pattern is the heart of the ERC-20 allowance system.

<code>mapping(address => mapping(address => uint256)) public allowance;

function approve(address spender, uint256 amount) public {
    allowance[msg.sender][spender] = amount;
}</code>

Combining Structs and Mappings

A powerful pattern is mapping keys to structs. This lets you store rich records keyed by an id or address.

<code>struct Order {
    uint256 amount;
    bool paid;
}

mapping(uint256 => Order) public orders;

function createOrder(uint256 id, uint256 amt) public {
    orders[id] = Order({ amount: amt, paid: false });
}</code>

Arrays of Structs

You can keep a dynamic array of structs when you need ordered, iterable records. Combine it with a mapping for fast lookup.

<code>struct Item { string name; uint256 price; }
Item[] public items;

function addItem(string memory n, uint256 p) public {
    items.push(Item(n, p));
}</code>

Reference Semantics

When you assign a storage reference type to a local storage variable, both point to the same data. Changes through one are visible through the other.

A memory copy, in contrast, is independent.

<code>uint[] public data;

function tweak() public {
    uint[] storage ref = data; // alias
    ref.push(42);              // also changes data
}</code>

Quick Check

Test your understanding of reference types.

Recap

You explored Solidity reference types:

  • Arrays (fixed and dynamic), plus bytes and string
  • Structs to group related fields
  • Mappings and nested mappings for key-value storage
  • Powerful combinations like mapping-to-struct and arrays-of-structs

Reference types share locations, so always be deliberate about storage versus memory.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Tipe Referensi” gratis?

Ya — teks lengkap “Tipe Referensi” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Web3 & DApp Development Fundamentals, upgrade ke CoddyKit PRO. Kursus Web3 & DApp Development Fundamentals mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Tipe Referensi”?

array, struct, mapping Kamu berlatih Web3 & DApp Development Fundamentals dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Web3 & DApp Development Fundamentals?

Tidak diperlukan pengalaman sebelumnya. Web3 & DApp Development Fundamentals di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Tipe Referensi” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Web3 & DApp Development Fundamentals ini?

Ya. Setiap pelajaran Web3 & DApp Development Fundamentals menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Tipe Nilai
  2. Tipe Referensi
  3. Storage vs Memory
  4. Konstanta dan Nilai Imutabel
← Kembali ke Web3 & DApp Development Fundamentals