函数修改器Modifiers用法总结(为函数增加一个判断条件,条件为True才会执行)

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;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43343144/article/details/88108016