使用修饰符让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 ==