Solidity - 函数修饰符
函数修饰符用于修改函数的行为。 例如,向函数添加先决条件。
首先我们创建一个带或不带参数的修饰符。
contract Owner { modifier onlyOwner { require(msg.sender == owner); _; } modifier costs(uint price) { if (msg.value >= price) { _; } } }
函数体插入特殊符号"_;"的位置 出现在修饰符的定义中。 因此,如果调用该函数时满足修饰符的条件,则执行该函数,否则抛出异常。
请参阅下面的示例 −
pragma solidity ^0.5.0; contract Owner { address owner; constructor() public { owner = msg.sender; } modifier onlyOwner { require(msg.sender == owner); _; } modifier costs(uint price) { if (msg.value >= price) { _; } } } contract Register is Owner { mapping (address => bool) registeredAddresses; uint price; constructor(uint initialPrice) public { price = initialPrice; } function register() public payable costs(price) { registeredAddresses[msg.sender] = true; } function changePrice(uint _price) public onlyOwner { price = _price; } }