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

本篇内容主要讲解“如何使用修饰符让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有更好的可读性”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


当前题目:如何使用修饰符让Solidity有更好的可读性
URL分享:http://myzitong.com/article/igdcpd.html