char1ey 2023. 6. 4. 11:00
목차
1. modifier
2. modifier 예제코드

 

1. modifier

 

여러 곳에 코드를 반복적으로 적어야하는 경우 사용한다.

 

modifier에서 지정한 자리( _ )에 함수를 끼워넣어서 사용하는 느낌이다.

 

 

선언은 다음과 같이 한다.

modifier [ 변수명 ] (인자) {
    -; // 함수를 실행할 위치 지정
    // 코드 내용
}

 

함수를 실행할 위치를 지정해야하며, 사용자가 임의로 지정해주면 된다.

 

함수에 적용시키는 방법은 함수의 접근제한자 뒤쪽에 선언한 modifier의 이름을 적어주면된다.

 

function 함수명 ( ) 접근제한자 [ modifier 이름 ] ( modifier 인자 ) ... { ... }

 

modifier의 인자는 함수의 인자에서 받아온다.

 

 

 

2. modifier 예제코드

 

 

아래의 코드는 함수를 실행시키면 인자가 modifier로 넘어가서 require 문을 실행하는 코드이다.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract ExModifier {
    modifier overNumber(uint256 _value) {
        _;
        require(_value > 10, "error");
    }

    function InputNumber(uint256 _value) public pure overNumber(_value) {}
}

 

 

함수를 실행시키면 modifier가 실행되어 인자값에 따라 에러를 발생시킨다.

 

각각 11과 9를 넣었을 때이며, 11을 넣었을 때는 통과 9를 넣었을 때는 에러가 발생한다.

 


 

아래의 코드는 _ 의 위치에 따라 실행순서를 알아보는 코드이다.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract ExModifier {

    uint256 public num = 5;

    modifier numChange {
        // _;
        num = 10;
        // _;
    }

    function numChangeFunc() public numChange {
        num = 15;
    }
}

 

최초 num값 호출시 5가 들어가있다.

 

 

위의 _ 의 주석을 풀면 num 값은 최종적으로 10이 되고,

 

 

아래의 주석을 풀면 num 값은 함수안에 있는 15가 된다.