견고성-기능

함수는 프로그램의 어느 곳에서나 호출 할 수있는 재사용 가능한 코드 그룹입니다. 이렇게하면 동일한 코드를 반복해서 작성할 필요가 없습니다. 프로그래머가 모듈 식 코드를 작성하는 데 도움이됩니다. 함수를 사용하면 프로그래머가 큰 프로그램을 여러 개의 작고 관리 가능한 함수로 나눌 수 있습니다.

다른 고급 프로그래밍 언어와 마찬가지로 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