跳到主要内容

模块化

import

使用 import 导入合约,并使用导入的合约的内容。 import 可以使本地合约路径或远程地址

// A.sol
contract A {}

// B.sol
import "./A.sol"; // 导入合约A
contract B is A {}

library

库类似于合约,但你不能声明任何状态变量,也不能发送以太币。如果所有库函数都是 internal 的,则将库嵌入到合约中。

使用库合约需要使用 using for , 如下所示

// safemath.sol
library SafeMath {
function add(uint x, uint y) internal pure returns (uint) {
uint z = x + y;
require(z >= x, "uint overflow");

return z;
}
}

// TestSafeMath.sol
import "./safemath.sol";
contract TestSafeMath {
// 使用 SafeMath, 则 uint 会拥有 SafeMath 所有方法
using SafeMath for uint;

uint public MAX_UINT = 2**256 - 1;

function testAdd(uint x, uint y) public pure returns (uint) {
return x.add(y);
}

function testSquareRoot(uint x) public pure returns (uint) {
return Math.sqrt(x);
}
}