Asas Pembangunan Web3 & DApp · Pelajaran

Fungsi dan Struktur Kawalan

Pelajari cara mentakrifkan fungsi, menggunakan pengubah keterlihatan (public, private, internal, external) dan melaksanakan aliran kawalan (if/else, gelung).

Pelajaran 3 daripada 312 langkah

Fungsi dan Struktur Kawalan ialah pelajaran Asas Pembangunan Web3 & DApp percuma di CoddyKit. Ini ialah pelajaran 3 daripada 3. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Asas Pembangunan Web3 & DApp, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Asas Pembangunan Web3 & DApp merangkumi sejumlah 3 pelajaran.

Apakah Fungsi dalam Solidity?

Fungsi ialah blok kod bernama yang melaksanakan tugas tertentu dalam kontrak pintar anda. Fungsi penting untuk menyusun logik kontrak, membolehkannya digunakan semula dan meningkatkan kebolehbacaan.

Anggaplah fungsi sebagai tindakan atau operasi yang boleh dilaksanakan oleh kontrak pintar anda, seperti mengira nilai atau mengemas kini pemboleh ubah keadaan.

Mentakrifkan Fungsi Pertama Anda

Fungsi asas mengandungi kata kunci function, nama, parameter pilihan, penentu keterlihatan dan jenis nilai pulangan pilihan. Berikut ialah fungsi mudah yang memulangkan ucapan:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract MyFirstFunctions {
  function greet() public pure returns (string memory) {
    return "Hello, CoddyKit!";
  }
}

Fungsi dengan Parameter & Nilai Pulangan

Fungsi boleh menerima input (dipanggil parameter) dan menghasilkan output (nilai pulangan). Hal ini membolehkan fungsi melaksanakan operasi dinamik berdasarkan data yang anda berikan.

Contohnya, fungsi boleh menerima dua nombor dan memulangkan hasil tambahnya.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract MathFunctions {
  function add(uint a, uint b) public pure returns (uint) {
    return a + b;
  }

  function subtract(uint a, uint b) public pure returns (uint) {
    // Ensure positive result for unsigned integers
    if (a >= b) {
      return a - b;
    } else {
      return 0;
    }
  }
}

Memahami Keterlihatan Fungsi

Keterlihatan fungsi menentukan siapa yang boleh memanggil sesuatu fungsi dan caranya. Ini penting untuk keselamatan serta kawalan akses kepada logik dan data kontrak anda. Terdapat empat jenis utama:

  • public: Boleh dipanggil dari mana-mana sahaja (secara luaran atau dalaman).
  • private: Hanya boleh dipanggil dari dalam kontrak semasa.
  • internal: Boleh dipanggil dari dalam kontrak dan kontrak terbitan.
  • external: Hanya boleh dipanggil dari luar kontrak.

Fungsi Awam dan Persendirian

Fungsi public ialah yang paling biasa dan membolehkan DApp serta kontrak lain berinteraksi dengan kontrak anda. Fungsi private adalah untuk logik dalaman yang tidak sepatutnya didedahkan atau dipanggil secara terus dari luar.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract VisibilityDemo1 {
  uint private _secretNumber = 42;

  // Public function, callable by anyone
  function getSecretNumber() public view returns (uint) {
    // Can call private functions internally
    return _getSecret();
  }

  // Private function, only callable from within this contract
  function _getSecret() private view returns (uint) {
    return _secretNumber;
  }
}

Fungsi Dalaman dan Luaran

Fungsi internal serupa dengan private, tetapi juga boleh dipanggil oleh kontrak yang mewarisi kontrak semasa. Fungsi external ONLY boleh dipanggil dari luar kontrak (contohnya, oleh pengguna atau kontrak lain), menjadikannya cekap dari segi gas untuk interaksi luaran sahaja.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract VisibilityDemo2 {
  uint public counter = 0;

  // External function, only callable from outside
  function incrementExternal() external {
    // Can call internal functions
    _incrementInternal();
  }

  // Internal function, callable from within this contract
  // and derived contracts
  function _incrementInternal() internal {
    counter++;
  }
  
  // Note: Calling an external function internally
  // (e.g., this.incrementExternal()) is not allowed
  // and would result in a compile error.
}

Logik Bersyarat: If/Else

Pernyataan kawalan aliran membolehkan kontrak anda melaksanakan laluan kod yang berbeza berdasarkan syarat. Pernyataan if/else penting untuk membuat keputusan dalam logik kontrak anda.

  • if (condition): Melaksanakan satu blok kod jika syarat itu benar.
  • else if (anotherCondition): Menyemak syarat lain jika if pertama adalah palsu.
  • else: Melaksanakan kod jika semua syarat if dan else if sebelumnya adalah palsu.

Contoh If/Else

Contoh ini menunjukkan cara menggunakan if, else if dan else untuk mengkategorikan nombor. Ini ialah corak biasa untuk mengendalikan senario yang berbeza.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract ConditionalChecks {
  function checkNumber(uint num) public pure returns (string memory) {
    if (num > 100) {
      return "Number is large.";
    } else if (num > 50) {
      return "Number is medium.";
    } else {
      return "Number is small.";
    }
  }
}

Gelung dengan `for`

Gelung membolehkan anda melaksanakan satu blok kod berulang kali. Dalam Solidity, gelung for digunakan untuk mengulangi operasi dalam bilangan yang diketahui.

Penting: Berhati-hatilah dengan gelung yang melibatkan banyak pengulangan dalam Solidity kerana setiap operasi memerlukan gas. Gelung yang kompleks atau tidak terhad boleh menyebabkan yuran transaksi yang sangat tinggi atau kehabisan gas, lalu menyebabkan transaksi anda gagal!

Contoh Gelung For

Berikut ialah gelung for asas yang menjumlahkan nombor sehingga had tertentu. Untuk kontrak sebenar, pastikan limit sentiasa kecil dan tetap, atau elakkan gelung apabila kos gas mungkin menjadi terlalu tinggi.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract LoopDemo {
  function sumUpTo(uint limit) public pure returns (uint) {
    // In real contracts, 'limit' should be very small
    // to avoid excessive gas costs.
    uint total = 0;
    for (uint i = 0; i < limit; i++) {
      total += i;
    }
    return total;
  }
}

Uji Pengetahuan Anda!

Antara pernyataan berikut, yang manakah tentang pengubah keterlihatan fungsi Solidity adalah TRUE?

Ringkasan Fungsi & Kawalan Aliran

Syabas! Dalam pelajaran ini, anda memperoleh pengetahuan penting tentang:

  • Mentakrifkan fungsi untuk menyusun dan memodularkan logik kontrak anda.
  • Memahami dan menggunakan pengubah keterlihatan public, private, internal dan external untuk mengawal akses fungsi.
  • Melaksanakan logik bersyarat menggunakan pernyataan if/else untuk membuat keputusan.
  • Memahami asas gelung for dan kepentingan kritikal pertimbangan gas semasa menggunakannya.

Blok binaan ini penting untuk mencipta kontrak pintar yang dinamik, selamat dan cekap. Seterusnya, kita akan meneroka IDE Remix untuk menyusun dan menggunakan kontrak anda!

Percuma untuk bermula

Pelajari Asas Pembangunan Web3 & DApp dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
29
Pelajaran
105

Soalan Lazim

Adakah pelajaran “Fungsi dan Struktur Kawalan” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Asas Pembangunan Web3 & DApp, termasuk “Fungsi dan Struktur Kawalan”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Asas Pembangunan Web3 & DApp merangkumi sejumlah 3 pelajaran.

Apakah yang akan saya pelajari dalam “Fungsi dan Struktur Kawalan”?

Pelajari cara mentakrifkan fungsi, menggunakan pengubah keterlihatan (public, private, internal, external) dan melaksanakan aliran kawalan (if/else, gelung). Anda berlatih Asas Pembangunan Web3 & DApp menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Asas Pembangunan Web3 & DApp?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Asas Pembangunan Web3 & DApp di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 3.

Berapa lamakah pelajaran “Fungsi dan Struktur Kawalan” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Asas Pembangunan Web3 & DApp ini?

Ya. Setiap pelajaran Asas Pembangunan Web3 & DApp menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Pengenalan kepada Solidity
  2. Pemboleh Ubah dan Jenis Data
  3. Fungsi dan Struktur Kawalan
← Kembali ke Asas Pembangunan Web3 & DApp