견고성-기능
함수는 프로그램의 어느 곳에서나 호출 할 수있는 재사용 가능한 코드 그룹입니다. 이렇게하면 동일한 코드를 반복해서 작성할 필요가 없습니다. 프로그래머가 모듈 식 코드를 작성하는 데 도움이됩니다. 함수를 사용하면 프로그래머가 큰 프로그램을 여러 개의 작고 관리 가능한 함수로 나눌 수 있습니다.
다른 고급 프로그래밍 언어와 마찬가지로 Solidity는 함수를 사용하여 모듈 식 코드를 작성하는 데 필요한 모든 기능을 지원합니다. 이 섹션에서는 Solidity에서 자신 만의 함수를 작성하는 방법을 설명합니다.
기능 정의
함수를 사용하기 전에 정의해야합니다. Solidity에서 함수를 정의하는 가장 일반적인 방법은function 키워드, 고유 한 함수 이름, 매개 변수 목록 (비어있을 수 있음) 및 중괄호로 둘러싸인 명령문 블록이 뒤 따릅니다.
통사론
기본 구문이 여기에 표시됩니다.
function function-name(parameter-list) scope returns() {
//statements
}
예
다음 예제를 시도하십시오. 매개 변수가없는 getResult라는 함수를 정의합니다.
pragma solidity ^0.5.0;
contract Test {
function getResult() public view returns(uint){
uint a = 1; // local variable
uint b = 2;
uint result = a + b;
return result;
}
}
함수 호출
나중에 계약의 어딘가에서 함수를 호출하려면 다음 코드에 표시된대로 해당 함수의 이름을 작성하기 만하면됩니다.
Solidity에서 문자열이 어떻게 작동하는지 이해하려면 다음 코드를 시도하십시오.
pragma solidity ^0.5.0;
contract SolidityTest {
constructor() public{
}
function getResult() public view returns(string memory){
uint a = 1;
uint b = 2;
uint result = a + b;
return integerToString(result);
}
function integerToString(uint _i) internal pure
returns (string memory) {
if (_i == 0) {
return "0";
}
uint j = _i;
uint len;
while (j != 0) {
len++;
j /= 10;
}
bytes memory bstr = new bytes(len);
uint k = len - 1;
while (_i != 0) {
bstr[k--] = byte(uint8(48 + _i % 10));
_i /= 10;
}
return string(bstr);//access local variable
}
}
Solidity First Application 장에 제공된 단계를 사용하여 위 프로그램을 실행하십시오 .
산출
0: string: 3
기능 매개 변수
지금까지 매개 변수가없는 함수를 보았습니다. 그러나 함수를 호출하는 동안 다른 매개 변수를 전달하는 기능이 있습니다. 이러한 전달 된 매개 변수는 함수 내에서 캡처 할 수 있으며 이러한 매개 변수를 통해 모든 조작을 수행 할 수 있습니다. 함수는 쉼표로 구분 된 여러 매개 변수를 사용할 수 있습니다.
예
다음 예제를 시도하십시오. 우리는uint2str여기에 기능. 하나의 매개 변수가 필요합니다.
pragma solidity ^0.5.0;
contract SolidityTest {
constructor() public{
}
function getResult() public view returns(string memory){
uint a = 1;
uint b = 2;
uint result = a + b;
return integerToString(result);
}
function integerToString(uint _i) internal pure
returns (string memory) {
if (_i == 0) {
return "0";
}
uint j = _i;
uint len;
while (j != 0) {
len++;
j /= 10;
}
bytes memory bstr = new bytes(len);
uint k = len - 1;
while (_i != 0) {
bstr[k--] = byte(uint8(48 + _i % 10));
_i /= 10;
}
return string(bstr);//access local variable
}
}
Solidity First Application 장에 제공된 단계를 사용하여 위 프로그램을 실행하십시오 .
산출
0: string: 3
반환 진술
Solidity 함수는 옵션을 가질 수 있습니다. return성명서. 함수에서 값을 반환하려는 경우 필요합니다. 이 문은 함수의 마지막 문이어야합니다.
위의 예에서와 같이 uint2str 함수를 사용하여 문자열을 반환합니다.
Solidity에서 함수는 여러 값을 반환 할 수도 있습니다. 아래 예를 참조하십시오-
pragma solidity ^0.5.0;
contract Test {
function getResult() public view returns(uint product, uint sum){
uint a = 1; // local variable
uint b = 2;
product = a * b;
sum = a + b;
//alternative return statement to return
//multiple values
//return(a*b, a+b);
}
}
Solidity First Application 장에 제공된 단계를 사용하여 위 프로그램을 실행하십시오 .
산출
0: uint256: product 2
1: uint256: sum 3