솔리디티의 modifier는 한 함수에 여러개 적용이 가능한데 그 순서를 알아보자
아래의 예시를 살펴보겠습니다
contract Test {
address owner;
modifier onlyOwner {
require(msg.sender == owner);
_;
}
modifier costs(uint price) {
if (msg.value >= price) {
_;
}
}
constructor() public {
owner = msg.sender;
}
function changeOwner(address newOwner) public onlyOwner costs(10) {
owner = newOwner;
}
}
여기서 먼저 앞에 나온 onlyOwner부터 적용이 됩니다
고로 [ onlyOwner의 _; == cost(10) ] 이 됩니다
function changeOwner(address newOwner) public {
require(msg.sender == owner);
if (msg.value >= price) {
owner = newOwner;
}
}
👆 모디파이어가 적용된 모습
이전에 포스팅했던 상속 순서와도 거의 똑같은 것 같다
'Solidity' 카테고리의 다른 글
솔리디티의 이상한 상속 계층구조 (0) | 2023.04.26 |
---|---|
[오류 / Solidity] 크기가 정해진 배열에 push (0) | 2022.11.23 |
[오류 / Solidity] remixd : 이 시스템에서 스크립트를 실행할 수 없으므로 ... (0) | 2022.10.17 |