BlockChain/Solidity 깨부수기 ( 유투브 강의 )
Solidity 문법 - (21) modifier
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가 된다.