Solidity-function-modifiers

提供:Dev Guides
移動先:案内検索

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;
   }
}