一、什么是函数修改器?
函数修改器(Modifier)可以用来改变一个函数的行为,通常用于在函数执行时检查某种前置条件,有点类似于面向对象编程里面的切面或者是中间件。和切面、中间件不同的是,solidity的函数修改器会把修改器的代码插入到要修改的函数前面去执行。 modifier onlyAdmin {
require(msg.sender==admin);
// do some thing...
_;
}
function start() public onlyAdmin{
_; // do some thing... 代码会被引入到这里来
}
二、理解函数修改器的执行流程
在修改器中或者函数内执行return语句,此时执行流程仅跳出当前的修改器或者函数,“_”后面会继续执行;
modifier isLock{
requrie(!locked);
locked = ture;
_;
locked = false;
}
function add(uint a;uint b) isLock returns(uint){
return a+b;
}
上面两个函数的伪代码是
function add(uint a;uint b) isLock returns(uint){
requrie(!locked);
locked = ture;
(return a+b;)
locked = false;
}
三、写代码实战
