温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何使用修饰符让Solidity有更好的可读性

发布时间:2021-12-07 15:26:37 来源:亿速云 阅读:134 作者:iii 栏目:互联网科技

本篇内容主要讲解“如何使用修饰符让Solidity有更好的可读性”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用修饰符让Solidity有更好的可读性”吧!

修饰符是可以应用于其他函数的一个函数。在调用函数之前,确保满足某些先决条件非常有用。我们举一个简单的例子,在我们已经写过的合约中,我们经常要检查函数的调用者是否是合约的所有者:

    function increment() public {
       if (owner == msg.sender) { // We check who calls the function
          count = count + 1;
       }
    }

想象一下,如果我们的智能合约有多个只能由所有者调用的函数,那么如果owner == msg.sender部分需要重构那么怎么做?这是修饰语将帮助我们的地方。让我们看第一个修饰符:

    modifier isAdmin() {
        require(msg.sender == owner);
        _;
    }
 
    function increment() public isAdmin {
        count = count + 1;
    }

我们的修饰符看起来像一个函数。require()函数评估条件,如果不满足条件将抛出异常,这将停止执行我们的智能合约。_关键字告诉编译器用函数体替换_

与函数一样,修饰符可以接受参数。假设我们可以拥有多个用户,并希望检查所有权,看下面的代码:

    modifier onlyBy(address _account) {
        require(msg.sender == _account);
        _;
    }
 
    function increment() public onlyBy(owner) {
        count = count + 1;
    }

正如你所看到的,我们的修饰符更通用,这让我们可以做更多事。

你还可以编写最通用的修饰符,只有在任何条件为真时才运行:

    modifier onlyIf(bool _condition) {
        require(_condition);
        _;
    }
 
    function increment() public onlyIf(msg.sender == owner) {
        count = count + 1;

通过在空格分隔的列表中指定多个修饰符,将多个修饰符应用于函数,并按所显示的顺序进行评估。

    modifier onlyIf(bool _condition) {
        require(_condition);
        _;
    }
 
    function increment() public onlyIf(msg.sender == owner) onlyIf(count < 200) {
        count = count + 1;
    }

到此,相信大家对“如何使用修饰符让Solidity有更好的可读性”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI