견고하게 여러 값을 반환하는 방법은 다음과 같습니다.

이상하게도 Solidity는 함수가 여러 값을 반환하도록 허용합니다. 프로그래밍 경험이 있다면 익숙하지 않을 수 있습니다. 그러나이 기능은 매우 유용한 것으로 판명 될 수 있습니다. 다음은 이를 설명하는 견고성 문서의 스니펫입니다.

contract sample {
 function a() returns (uint a, string c){

    // wrap all returned 
    // values in a tuple
    return (1, "ss");
 }

 function b(){
    uint A;
    string memory B;

    //A is 1 and B is "ss"
    (A, B) = a();

    //A is 1
    (A,) = a();

    //B is "ss"
    (, B) = a();
 }
}


코드의 함수a()는 여러 값을 반환하고 이를 달성하기 위해 반환하려는 모든 값을 튜플 "()"로 간단히 래핑합니다.

따라서 a()는 1과 문자열 "ss"를 모두 반환합니다. 또한 함수 선언의 returns 부분에서 유형을 선언해야 합니다.

a()에서 두 값 모두 추출



그렇다면 이러한 값을 어떻게 추출합니까?

음, 함수b()가 하는 일입니다. a() 를 호출하면 추출하려는 값의 수와 동일한 변수가 있는 튜플에 결과를 할당할 수 있습니다.

function b(){
    //...
    (A, B) = a();
}


이것은 A에 1을 할당하고 B에 "ss"를 할당합니다. 단일 값, 아마도 a()에 의해 반환된 첫 번째 값이 필요한 경우 어떻게 합니까?

a()에서 단일 값 추출



단일 값을 추출하려면 다음과 같이 하십시오.

function b(){
    // not all elements have to be 
   // specified (but the number must match).       
    (,B) = a();
}


두 번째 반환 값인 "ss"를 B에 할당해야 합니다. 튜플의 첫 번째 값을 어떻게 비워 두었는지 관찰하십시오. B를 추출하려면 그렇게 해야 합니다. 첫 번째 값을 추출하는 경우에도 마찬가지입니다.

function b(){
    // not all elements have to be 
  // specified (but the number must match).       
    (A,) = a();
}


마무리



이것이 여러 값을 반환하는 함수를 작성하고 코드에서 해당 값을 사용하는 방법입니다. 도움이 되었기를 바랍니다. 빠르고 간결한 내용을 읽어주셔서 감사합니다. 이 지식으로 무엇을 하는지 보고 싶어요. 응원합니다.

코하

좋은 웹페이지 즐겨찾기