Jenis Rujukan
arrays, structs, mappings
Jenis Rujukan ialah pelajaran Asas Pembangunan Web3 & DApp percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. 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 4 pelajaran.
Apakah Jenis Rujukan?
Jenis rujukan menerangkan data yang terlalu besar untuk dimuatkan dalam satu slot, jadi pemboleh ubah merujuk kepada lokasi dan bukannya menyimpan data secara langsung.
Tiga jenis rujukan ialah tatasusunan, struktur dan pemetaan. Apabila menggunakannya, anda mesti mempertimbangkan lokasi datanya: storage, memory atau calldata.
Tatasusunan Bersaiz Tetap
Tatasusunan bersaiz tetap mempunyai panjang yang ditetapkan pada masa penyusunan dan tidak boleh berkembang. Jenis uint[3] sentiasa menyimpan tepat tiga nilai.
Gunakan .length untuk membaca saiznya. Akses di luar julat akan mengundurkan transaksi.
<code>uint[3] public scores = [10, 20, 30];
function first() public view returns (uint) {
return scores[0];
}</code>Tatasusunan Dinamik
Tatasusunan dinamik boleh berkembang dan mengecil. Isytiharkannya sebagai uint[]. Dalam storan, anda boleh menggunakan push untuk menambah elemen dan pop untuk membuang elemen terakhir.
<code>uint[] public nums;
function add(uint n) public {
nums.push(n);
}
function removeLast() public {
nums.pop();
}</code>Bytes dan String
bytes ialah tatasusunan bait bersaiz dinamik dan string ialah pasangan teks UTF-8nya. Kedua-duanya ialah jenis rujukan.
Nota: string tidak mempunyai .length atau pengindeksan; tukarkannya kepada bytes terlebih dahulu untuk memeriksa bait mentah.
<code>string public name = 'Alice';
function nameLength() public view returns (uint) {
return bytes(name).length;
}</code>Mentakrifkan Struct
struct mengumpulkan pemboleh ubah berkaitan ke dalam satu jenis tersuai. Ia sesuai untuk memodelkan entiti seperti pengguna, pesanan atau token.
<code>struct User {
string name;
uint256 balance;
bool active;
}</code>Menggunakan Struct
Anda boleh mencipta struct dengan argumen berposisi atau bernama dan menyimpannya. Membaca struct daripada storan memberikan anda rujukan yang boleh diubah suai.
<code>User public owner;
function setup(string memory n) public {
owner = User({ name: n, balance: 0, active: true });
}</code>Pemetaan
mapping ialah stor nilai-kunci, seperti jadual cincang. Ia merupakan salah satu struktur yang paling banyak digunakan dalam kontrak pintar, contohnya untuk menjejaki baki bagi setiap alamat.
Kunci tidak disimpan, jadi anda tidak boleh mengulangi pemetaan atau mendapatkan panjangnya.
<code>mapping(address => uint256) public balances;
function deposit() public payable {
balances[msg.sender] += msg.value;
}</code>Pemetaan Bersarang
Pemetaan boleh disarang untuk memodelkan hubungan, seperti allowance apabila seorang pemilik membenarkan beberapa pembelanja.
<code>mapping(address => mapping(address => uint256)) public allowance;
function approve(address spender, uint256 amount) public {
allowance[msg.sender][spender] = amount;
}</code>Menggabungkan Struct dan Pemetaan
Corak yang berkuasa ialah memetakan kunci kepada struct. Ini membolehkan anda menyimpan rekod terperinci berdasarkan id atau alamat.
<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>Tatasusunan Struct
Anda boleh menyimpan tatasusunan dinamik struct apabila memerlukan rekod tersusun yang boleh diulangi. Gabungkannya dengan pemetaan untuk carian pantas.
<code>struct Item { string name; uint256 price; }
Item[] public items;
function addItem(string memory n, uint256 p) public {
items.push(Item(n, p));
}</code>Semantik Rujukan
Apabila anda menetapkan jenis rujukan storan kepada pemboleh ubah storage tempatan, kedua-duanya menunjuk kepada data yang sama. Perubahan melalui satu daripadanya dapat dilihat melalui yang satu lagi.
Sebaliknya, salinan memory adalah bebas.
<code>uint[] public data;
function tweak() public {
uint[] storage ref = data; // alias
ref.push(42); // also changes data
}</code>Semakan Pantas
Uji pemahaman anda tentang jenis rujukan.
Imbas Kembali
Anda telah meneroka jenis rujukan Solidity:
- Tatasusunan (tetap dan dinamik), serta
bytesdanstring - Struct untuk mengumpulkan medan berkaitan
- Pemetaan dan pemetaan bersarang untuk storan nilai-kunci
- Gabungan berkuasa seperti pemetaan-ke-struct dan tatasusunan-struct
Jenis rujukan berkongsi lokasi, jadi sentiasa tentukan dengan teliti penggunaan storage berbanding memory.
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 “Jenis Rujukan” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Asas Pembangunan Web3 & DApp, termasuk “Jenis Rujukan”, 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 4 pelajaran.
Apakah yang akan saya pelajari dalam “Jenis Rujukan”?
arrays, structs, mappings 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 2 daripada 4.
Berapa lamakah pelajaran “Jenis Rujukan” 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.