Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 솔리디티
- 2021정보처리기사실기
- ERC721
- node.js
- blockchain
- 정보처리기사실기
- web3.js
- npm
- 노마드코더
- it5
- 블록체인
- Non-Blocking
- it5분잡학사전
- Klaytn
- 페이지클론
- ETH
- git
- 카카오홈페이지클론
- ERC-721
- React
- 노개북
- 클레이튼
- 비트코인
- solidity
- 카카오페이지클론
- 정보처리기사실기요약
- 정보처리기사
- 이더리움
- github
- 콜백함수this
Archives
- Today
- Total
Be lazy, Be crazy
FunctionModifier 본문
728x90
반응형
modifier함수를 사용하는 이유는 무엇일까?
일단 자주 사용하는 조건문에대한 반복을 막을 수 있다.
A,B,C 함수에 x=10이면 함수사용을 거부한다라는 조건을 각각에 넣기 보다는 x=10이면 거부해주는 함수 하나를 만들어서 재사용하는 것이 훨씬 좋다고 생각이 든다.
밑에 코드를 참조하면 더 쉽게 이해가 가겠지만,
1. Basic은 modifier을 만들고 사용되어야하는 함수부분에 추가해주는것이다. 이때 인자값이 필요가없는 경우다.
2. input은 위 1번과 같은경우지만 modifier에 인자가들어가야 하는 부분이다.
function incBy(uint _x) external whenNotPause cap(_x)
modifier을 연달아 사용가능하며 필요하다면 인자값도 전달해줄 수 있다.
3. sandwich - 개인적으로 모르고 있었던 기능;
code1 _; code2. -> modifer code1 실행 -> _;함수실행 -> modifer code2 실행
아래 코드 참조
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;
contract FunctionModifier {
//Basic, input, sandWich
bool public paused;
uint public count;
modifier whenNotPause(){
require(!paused, "pasued");
_;
}
function setPasue(bool _paused) external {
paused = _paused;
}
function inc() external whenNotPause{
count += 1;
}
function dec() external whenNotPause{
count -= 1;
}
modifier cap(uint _x){
require(_x <100, "x >= 100");
_;
}
function incBy(uint _x) external whenNotPause cap(_x){
require(_x<100, "x>= 100");
count += _x;
}
modifier sandwich() {
count += 10;
_;
count *= 2;
}
function foo() external sandwich {
count += 1;
}
//실행해보면 값이 22가 됨.
//그말은 즉시 foo함수 기능이 처리되고 다시 modifier 밑에부분이 처리된다는 의미.
}
반응형
'BlockChain > 솔리디티' 카테고리의 다른 글
Array (0) | 2022.03.15 |
---|---|
FunctionOutputs (0) | 2022.03.14 |
Error (0) | 2022.03.12 |
ForAndWhileLoops (1) | 2022.03.12 |
If Else (0) | 2022.03.12 |
Comments