solidity的函数修改器类似于Python的装饰器
// 不带参数的函数修改器用法
pragma solidity ^0.5.1;
import { Hello } from "./test.sol" ;
contract Test001 is Hello {
uint value = 2;
function get_value() public view returns(uint){
return value;
}
# 如果kirin函数修改器条件为True,才会执行此方法
function set_value() public kirin {
value = 10;
}
# 函数修改器(Modifiers)如果Modifiers内部条件满足才会执行被修饰的函数
modifier kirin() {
require(value < 1);
# 这里的_结尾是modifier必须的,会被替换成对应的函数
_;
}
}
// 带参数的函数修改器用法
pragma solidity >=0.4.0 <0.6.0;
contract User {
bool public locked =true;
uint public user_age;
// 带参数的函数修改器用法
modifier conditions(uint age) {
require(age >= 18);
_; //(这里会替换成增加了此修改器的方法)
// 替换的方法运行结束之后(不管方法内部是否有return),继续往下面执行!
locked =false; //这里会继续执行!
}
function set_age(uint age) public conditions(age) {
user_age = age;
}
}