Soliditas - Array

Array adalah struktur data, yang menyimpan kumpulan elemen berurutan dengan ukuran tetap dari tipe yang sama. Sebuah array digunakan untuk menyimpan kumpulan data, tetapi seringkali lebih berguna untuk menganggap array sebagai kumpulan variabel dari tipe yang sama.

Daripada mendeklarasikan variabel individual, seperti number0, number1, ..., dan number99, Anda mendeklarasikan satu variabel array seperti angka dan menggunakan angka [0], angka [1], dan ..., angka [99] untuk mewakili variabel individu. Elemen tertentu dalam array diakses oleh indeks.

Dalam Solidity, sebuah array dapat berupa ukuran tetap waktu kompilasi atau ukuran dinamis. Untuk array penyimpanan, ia dapat memiliki berbagai jenis elemen juga. Dalam kasus larik memori, tipe elemen tidak dapat dipetakan dan jika akan digunakan sebagai parameter fungsi maka tipe elemen haruslah tipe ABI.

Semua array terdiri dari lokasi memori yang berdekatan. Alamat terendah sesuai dengan elemen pertama dan alamat tertinggi untuk elemen terakhir.

Mendeklarasikan Array

Untuk mendeklarasikan sebuah array dengan ukuran tetap dalam Solidity, programmer menentukan jenis elemen dan jumlah elemen yang dibutuhkan oleh sebuah array sebagai berikut:

type arrayName [ arraySize ];

Ini disebut larik berdimensi tunggal. ItuarraySize harus berupa konstanta bilangan bulat yang lebih besar dari nol dan typedapat berupa tipe data Soliditas apa pun yang valid. Misalnya, untuk mendeklarasikan array 10 elemen yang disebut balance of type uint, gunakan pernyataan ini -

uint balance[10];

Untuk mendeklarasikan array ukuran dinamis dalam Solidity, programmer menentukan jenis elemen sebagai berikut -

type[] arrayName;

Menginisialisasi Array

Anda dapat menginisialisasi elemen array Solidity baik satu per satu atau menggunakan satu pernyataan sebagai berikut -

uint balance[3] = [1, 2, 3];

Jumlah nilai di antara tanda kurung kurawal [] tidak boleh lebih besar dari jumlah elemen yang kita nyatakan untuk larik di antara tanda kurung siku []. Berikut adalah contoh untuk menetapkan satu elemen dari array -

Jika Anda menghilangkan ukuran array, sebuah array yang cukup besar untuk menampung inisialisasi akan dibuat. Karena itu, jika Anda menulis -

uint balance[] = [1, 2, 3];

Anda akan membuat larik yang persis sama seperti yang Anda lakukan di contoh sebelumnya.

balance[2] = 5;

Di atas wakilnya pernyataan sejumlah elemen 3 rd dalam array nilai 5.

Membuat array memori dinamis

Array memori dinamis dibuat menggunakan kata kunci baru.

uint size = 3;
uint balance[] = new uint[](size);

Mengakses Elemen Array

Sebuah elemen diakses dengan mengindeks nama array. Ini dilakukan dengan menempatkan indeks elemen dalam tanda kurung siku setelah nama array. Misalnya -

uint salary = balance[2];

Pernyataan di atas akan mengambil 3 rd elemen dari array dan menetapkan nilai variabel gaji. Berikut ini adalah contoh, yang akan menggunakan semua tiga konsep yang disebutkan di atas yaitu. deklarasi, tugas dan mengakses array -

Anggota

  • length- length mengembalikan ukuran array. length dapat digunakan untuk mengubah ukuran array dinamis menjadi pengaturannya.

  • push- push memungkinkan untuk menambahkan elemen ke array penyimpanan dinamis di bagian akhir. Ini mengembalikan panjang baru dari array.

Contoh

Coba kode berikut untuk memahami bagaimana array bekerja di Solidity.

pragma solidity ^0.5.0;

contract test {
   function testArray() public pure{
      uint len = 7; 
      
      //dynamic array
      uint[] memory a = new uint[](7);
      
      //bytes is same as byte[]
      bytes memory b = new bytes(len);
      
      assert(a.length == 7);
      assert(b.length == len);
      
      //access array variable
      a[6] = 8;
      
      //test array variable
      assert(a[6] == 8);
      
      //static array
      uint[3] memory c = [uint(1) , 2, 3];
      assert(c.length == 3);
   }
}