견고성-기능 수정 자

함수 수정자는 함수의 동작을 수정하는 데 사용됩니다. 예를 들어 함수에 전제 조건을 추가합니다.

먼저 매개 변수가 있거나없는 수정자를 만듭니다.

contract Owner {
   modifier onlyOwner {
      require(msg.sender == owner);
      _;
   }
   modifier costs(uint price) {
      if (msg.value >= price) {
         _;
      }
   }
}

특수 기호 "_;"가있는 곳에 함수 본문이 삽입됩니다. 수정 자 정의에 나타납니다. 따라서이 함수를 호출하는 동안 modifier의 조건을 만족하면 함수가 실행되고 그렇지 않으면 예외가 발생합니다.

아래 예를 참조하십시오-

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