BlockChain/솔리디티
FunctionOutputs
정신이 많이없는 개발자
2022. 3. 14. 23:46
728x90
반응형
💡 솔리디티에서 return은 어떤 형식으로 될까??
FunctionOutputs 말그대로 솔리디티 문법에서 return을 사용할 때 어떻게 return이 되고 어떤 형식으로 되는지 알아봅시다.
// 대략적으로 3가지 형식이 있다.
// 보통 언어와 비슷하게 function returnOne () public pure returns(uint){return 1;} 이런형식으로 1개를 리턴
// 조금 신기하게 여러개를 return 할 수도 있다.
function returnMany() public returns(uint, bool){ return (1, true);} 이와같은형식으로 2개를 리턴 주의할점은
## returns (타입,타입) 을입력해줌으로써 이함수는 어떤 타입을 return 할 것인지에 대해서는 명시해주어야 합니다.
### 아래 함수실행 후 결과 사진을 보면 이해가 더 빠르게 된다.
### 구조분해 할당 부분에서 주의할 점은
(,bool _b) = returnMany(); 이부분이다. returnMany()함수는 2개를 return해주는데 하나만 받고싶은 경우에는
콤마(,) 를 기준으로 해주어야지 제대로된 구조분해 할당이 된다.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;
//Return multiple outputs
// Named outputs
// Destructuring Assignment
contract FunctionOutputs {
//multiple outputs;
function returnMany() public pure returns(uint, bool) {
return(1,true);
}
//변수명으로 출력
function named() public pure returns(uint x, bool b) {
return(1,true);
}
//이러한 방법은 가스비를 조금 아낄수 있다.
function assigned() public pure returns(uint x, bool b) {
x = 1;
b = true;
}
// Destructuring Assignment
function destructingAssigments() public pure {
(uint x,bool b) = returnMany();
(,bool _b) = returnMany();
}
}
반응형