一、什么是函数修改器?

函数修改器(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;

}

三、写代码实战