Solidity - Perpustakaan
Perpustakaan mirip dengan Kontrak tetapi terutama dimaksudkan untuk digunakan kembali. Pustaka berisi fungsi yang dapat dipanggil oleh kontrak lain. Soliditas memiliki batasan tertentu dalam penggunaan Perpustakaan. Berikut adalah karakteristik utama dari Perpustakaan Soliditas.
Fungsi pustaka dapat dipanggil secara langsung jika tidak mengubah status. Itu berarti fungsi murni atau tampilan hanya bisa dipanggil dari luar perpustakaan.
Library tidak dapat dihancurkan karena dianggap tidak memiliki kewarganegaraan.
Perpustakaan tidak dapat memiliki variabel status.
Perpustakaan tidak dapat mewarisi elemen apa pun.
Perpustakaan tidak dapat diwariskan.
Contoh
Coba kode berikut untuk memahami bagaimana Perpustakaan bekerja di Solidity.
pragma solidity ^0.5.0;
library Search {
function indexOf(uint[] storage self, uint value) public view returns (uint) {
for (uint i = 0; i < self.length; i++) if (self[i] == value) return i;
return uint(-1);
}
}
contract Test {
uint[] data;
constructor() public {
data.push(1);
data.push(2);
data.push(3);
data.push(4);
data.push(5);
}
function isValuePresent() external view returns(uint){
uint value = 4;
//search if value is present in the array using Library function
uint index = Search.indexOf(data, value);
return index;
}
}
Jalankan program di atas menggunakan langkah-langkah yang disediakan di bab Aplikasi Solidity First .
Note - Pilih Test dari dropdown sebelum mengklik tombol deploy.
Keluaran
0: uint256: 3
Menggunakan Untuk
Arahan using A for B; dapat digunakan untuk melampirkan fungsi perpustakaan perpustakaan A ke tipe tertentu B. Fungsi ini akan menggunakan jenis pemanggil sebagai parameter pertama mereka (diidentifikasi menggunakan diri).
Contoh
Coba kode berikut untuk memahami bagaimana Perpustakaan bekerja di Solidity.
pragma solidity ^0.5.0;
library Search {
function indexOf(uint[] storage self, uint value) public view returns (uint) {
for (uint i = 0; i < self.length; i++)if (self[i] == value) return i;
return uint(-1);
}
}
contract Test {
using Search for uint[];
uint[] data;
constructor() public {
data.push(1);
data.push(2);
data.push(3);
data.push(4);
data.push(5);
}
function isValuePresent() external view returns(uint){
uint value = 4;
//Now data is representing the Library
uint index = data.indexOf(value);
return index;
}
}
Jalankan program di atas menggunakan langkah-langkah yang disediakan di bab Aplikasi Solidity First .
Note - Pilih Test dari dropdown sebelum mengklik tombol deploy.
Keluaran
0: uint256: 3