什么是库:
在Solidity中,库和合约有点类似,你可以把库理解成Java中只包含static函数的类。它的作用和目的是代码复用。和普通合约有点不同的是,Library中无法包含storage变量。
创建和使用库:
下面的Library,有一个包含mapping的数据结构,并且提供了查询和插入的功能。注意在函数中传入的Data都加入了storage关键字,这里是传入了一个Data的引用。
// Code for StringToUintMap.sol
pragma solidity ^0.4.15;
library StringToUintMap {
struct Data {
mapping (string => uint8) map;
}
function insert(
Data storage self,
string key,
uint8 value) public returns (bool updated)
{
require(value > 0);
updated = self.map[key] != 0;
self.map[key] = value;
}
function get(Data storage self, string key) public returns (uint8) {
return self.map[key];
}
}
下面的合约使用了StringToUintMap,在使用这个合约之前,L