本篇内容主要讲解“如何使用修饰符让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有更好的可读性”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。