📅  最后修改于: 2020-11-04 04:29:52             🧑  作者: Mango
库类似于合同,但主要用于重用。库包含其他合同可以调用的功能。坚固性对使用库有某些限制。以下是Solidity库的关键特征。
尝试以下代码以了解库如何在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;
}
}
使用Solidity First Application一章中提供的步骤运行上述程序。
注意-在单击部署按钮之前,从下拉列表中选择测试。
0: uint256: 3
指令使用A代表B;可以用于将库A的库函数附加到给定类型B。这些函数将使用调用者类型作为它们的第一个参数(使用self标识)。
尝试以下代码以了解库如何在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;
}
}
使用Solidity First Application一章中提供的步骤运行上述程序。
注意-在单击部署按钮之前,从下拉列表中选择测试。
0: uint256: 3