본문 바로가기
전공공부/블록체인공학

Solidity 함수의 입력 매개변수와 반환값

by 으노으뇨 2021. 11. 11.
728x90
반응형
SMALL

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이 나온다.

 

728x90
반응형
LIST

댓글