15函数修改器
_;表示其他代码在哪里运行
basic
inputs:带参数的
sandwish:函数的其他代码夹在修改器中间
// SPDX-License-Identifier: MIT
pragma solidity 0.8.18;
contract FunctionModifier{
bool public paused;
uint public count;
function setPause(bool _paused) external {
paused=_paused;
}
// basic
modifier whenNotPaused(){
require(!paused,"paused");
_; //后面代码正常运行
}
function inc() external whenNotPaused{
count+=1;
}
function dec() external whenNotPaused{
count-=1;
}
// inputs带参数
modifier cap(uint _x){
require(_x<100,"error:x>100");
_;
}
function incBy(uint _x) external whenNotPaused cap(_x){
count+=_x;
}
// sandwich
modifier sandwich(){
count+=10;
_;
count*=2;
}
// count先+10,然后再+1;然后再乘以2
function foo()external sandwich{
count+=1;
}
}