前言:
合约发布工具及版本:mist v0.9.3
一:修改器
修改器可以用来改变方法的行为,比如在方法正式执行之前,检查方法是否满足条件,如果满足条件,则执行方法,不满足则可以抛出异常等。
可以理解为python语言中的装饰器
二:实例
pragma solidity ^0.4.18;
contract modifierDemo {
address public owner;
uint public u;
function modifierDemo() public {
owner = msg.sender;
}
modifier onlyOwner{
if(msg.sender != owner){
revert();
}else{
_;
}
}
function set(uint _u) onlyOwner public {
u = _u;
}
}
三:知识点
Solidity 0.4.10 版本发布了新的 assert() , require() 和 revert() 函数,用于替代throw。
- throw:
目前的合约处理 throws 后会消耗剩余的 gas。尽管可以视为对矿工的慷慨捐助,但是往往会消耗用户大量金钱。 - revert、require:
将剩余 gas 返还用户。 - assert:
消耗 gas
使用详解参见博文Solidity 中 revert(), assert() 和 require() 的使用方法