1) 입력 매개변수
입력 매개변수가 없는 경우 : function 함수명( ) ...
반환값이 없는 경우
function 함수명() public view{
...
}
반환값이 있는 경우
function 함수명 () public view returns (반환값의 자료형){
...
return 반환값;
}
입력 매개변수가 있는 경우 : function 함수명( 자료형 변수이름, ... ) ...
반환값이 없는 경우
function 함수명(자료형 변수 이름, ...) public view {
...
}
반환값이 있는 경우
function 함수명(자료형 변수 이름, ...) public view returns (반환값의 자료형){
...
return 반환값 ;
}
2) 반환값의 종류
1. 정수
2. 실수
3. 문자
4. 배열
5. 구조체
등이 있으며 더 다양하다.
에제) 매개변수가 없고 반환값이 없는 경우
//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.6.10;
contract NonReturnValue {
uint a = 10;
uint b = 20;
function tmp1() public view{
a;
b;
}
}
에제) 매개변수가 없고 반환값이 있는경우
//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.6.10;
contract Returnvalue {
uint a = 10;
uint b = 20;
function tmp()public view returns(uint){
return a+b;
}
}
예제) 매개변수가 있지만 반환값이 없는 경우
//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.6.10;
contract Paramnonreturnvalue {
function tmp(uint a, uint b) public pure {
a;
b;
}
}
예제) 매개변수가 있지만 반환값이 있는 경우
//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.6.10;
contract Paramreturnvalue {
function tmp(uint a, uint b) public pure returns (uint){
a + b;
}
}
예제) 매개변수도 없고 반환값도 없다
//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.6.10;
contract Non {
uint a = 10;
uint b = 20;
function tmp() public view {
uint c;
c = a + b;
}
}
이런경우 a와 b를 기본값으로 가지고있을떄, 어떤 함수를 이용하면, 그 조직에 맞는 변수가 생성될때,
그 변수는 기존의 생성되어있던 변수 a,b의 합일때가있다. 그런 경우를 구현한 것이다.
예제) 입력 매개변수를 직접 입력받기
//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.6.10;
contract Inputparam {
function tmp(uint _a, uint _b) public pure {
_a;
_b;
}
}
이와같은 함수를 가진 계약을 디플로이하면 아래와같이 된다.
이때 tmp에 값을 넣어 준다면 a, b에 해당 값들이 들어가는 걸 알 수가있다.
이번엔 입력된 값들을 반환하는 함수를 만들어보자
//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.6.10;
contract Inputparamtoreturn {
//SPDX-License-Identifier: UNLICENSED
function tmp(uint _a, uint _b) public pure returns (uint) {
return _a + _b;
}
}
그럼 a와 b를 입력받아 값을 리턴해주도록 만들었다.
1과 2를 입력했다. 그럼 아래 사진을 보면 알겠지만 리턴값이 3이 나온것을 볼 수 가있다.
출력 매개변수 사용하여 출력하기
//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.6.10;
contract Tripleinputparamtoreturn {
//SPDX-License-Identifier: UNLICENSED
int a = 1;
int b = 2;
function tmp() public view returns (int) {
int c = 10 ;
return a + b + c;
}
}
상태변수와 지역변수를 모두 이용하는 함수를 만들었다. 상태변수 a, b와 c가 tmp 함수를 통해 더해진다.
그리고 더해진것을 returns (int) 와 return 을 통해 반환값이 있으며 이것들이 인수형인걸 알 수 가있다.
그럼 1+ 2+ 10 이 더해져 13이 나온다.
마지막으로 입력매개변수 2개와 상태변수 간의 합이다.
//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.6.10;
contract Globalvalueinputparamtoreturn {
int c = 10;
function tmp(int a, int b) public view returns (int) {
return a + b + c;
}
}
상태변수 10과 입력받는 값 a, b에 대해 한 합을 리턴, 반환한다. 이때 반환타입은 정수형이다.
마찬가지로 a, b 에 10과 20을 입력하면 기존의 c, 10과 합쳐져 30이 나온다.
'전공공부 > 블록체인공학' 카테고리의 다른 글
Solidity - 배열 및 데이터삭제, 타입 캐스트 (0) | 2021.11.15 |
---|---|
Solidity 함수의 타입제어 : view와 pure (0) | 2021.11.11 |
Solidity 데이터타입과 연산자(3) (0) | 2021.11.05 |
Solidity 데이터타입과 연산자(2) (0) | 2021.11.05 |
Solidity 데이터타입과 연산자 (0) | 2021.11.04 |
댓글