在solidity语言中,合约中允许使用constructor方法作一些初始化工作,例如
pragma solidity >0.4.99 <0.6.0;
contract Coin {
// The keyword "public" makes those variables
// easily readable from outside.
address public minter;
constructor() public {
minter = msg.sender;
}
}
Ultrain使用的typescript语言, 也使用了Class Contract作为所有合约的基类, 在合约中也有constructor方法:
class PersonContract extends Contract {
db: DBManager<Person>;
constructor(code: u64) {
super(code);
this.db = new DBManager<Person>(NAME(tblname), this.receiver, ''NAME(scope) + 3);
}
}
在ultrain的合约, constructor也可以做一些初始化的工作.
它们的区别在于:
- solidity的constructor创建合约的时候, 会执行一次; typescript的constructor创建合约的时候不会执行.
- solidity的constructor在整个合约周期只会执行一次; typescript的constructor<strong>每次调用合约方法之前, 都会执行, 它会执行多次.
熟悉solidity编写合约的同学, 需要特别注意这两个区别.