
| 특징 | 설명 |
|---|---|
| 코드 재사용 | Modifier는 여러 함수에 걸쳐서 공통적으로 사용되는 로직을 재사용할 수 있게 해줍니다. |
| 가독성 향상 | Modifier의 이름을 통해 해당 함수가 어떤 전제 조건하에 동작하는지 쉽게 이해할 수 있습니다. |
| 유연성 | Modifier 내에서 _를 사용하면 원래 함수의 코드가 어느 위치에 삽입될지 정할 수 있습니다. 이를 통해 함수의 실행 전후에 원하는 로직을 삽입할 수 있습니다. |
| 조건 체크 | Modifier는 함수가 실행되기 전에 특정 조건을 검사하는 데 주로 사용됩니다. 만약 조건이 만족되지 않으면 함수는 실행되지 않습니다. |
Function Modifier는 함수에 미리 정의된 로직을 적용할 수 있게 해주는 기능입니다. 이것을 통해서 반복적인 코드를 줄이고 가독성을 높일 수 있습니다.
다음은 예시 입니다.
contract MyContract {
address public owner;
constructor() public {
owner = msg.sender;
}
modifier onlyOwner {
require(msg.sender == owner, "Not the owner!");
_;
}
function changeOwner(address _newOwner) public onlyOwner {
owner = _newOwner;
}
}
위에서 보면 onlyOwner Modifier는 changeOwner 함수가 실행되기 전에 msg.sender가 현재 컨트랙트의 owner와 같은지 확인합니다. require문이 참이면 원래의 함수코드 owner = _newOwner;가 실행되고 거짓이면 에러메세지를 출력하고 함수 실행을 중지시킵니다.
_; 기호는 Modifier의 코드 내에서 원래 함수의 코드가 삽입될 위치를 표시합니다. 이 위치에 원래 함수의 로직이 삽입되어 실행됩니다.
따라서 Modifier는 특정 함수의 실행 전후에 원하는 로직을 삽입하거나, 특정 조건을 만족하는 경우에만 함수가 실행되도록 하는 기능 등을 수행합니다. 이것을 통해서 코드의 가독성과 재사용성을 높일 수 있습니다.