2017-09-26 6 views
3

기능 getBets()은 나를 오류 : error: Failed to decode output: Error: Unsupported or invalid type: tuple으로 만듭니다. 내가 뭘 놓치고 있니?구조체의 배열을 반환하는 방법?

pragma solidity ^0.4.11; 

contract Casino { 

    struct Bet { 
     address by; 
     uint number; 
    } 

    address owner; 
    Bet[] bets; 

    event BetPlaced(Bet bet); 

    function Casino() { 
     owner = msg.sender; 
    } 

    function bet(uint number) { 
     Bet memory bet; 
     bet.by = msg.sender; 
     bet.number = number; 

     bets.push(bet); 

     BetPlaced(bet); 
    } 

    function getBets() constant returns (Bet[]) { 
     return bets; 
    } 

    function getCount() constant returns (uint length) { 
     return bets.length; 
    } 
} 

답변

0

현재 올바른 경우 다차원 데이터 저장소 반환을 지원하지 않으므로 정수 배열을 제외한 어떤 것도 반환 할 수 없습니다.

다음을 사용하여 실험 라이브러리를 사용할 수 있습니다 :

pragma experimental ABIEncoderV2; 

을의 위치에 :

당신이 지금 것을 사용하는 경우이 리믹스에 사용할 수 없습니다
pragma solidity ^0.4.11; 

과 실험의 그래서 그것은 Solidity 소스의 일부가 될 수 없습니다. https://github.com/ethereum/solidity/issues/2948

구조체의 배열을 반환하고 싶다면 전체 배열을 바이트로 변환하고 바이트를 반환 할 수 있습니다. es. 이것은 약간의 극단적 인 경우이고 나는 그것을 조언하지 않을 것이다.

메소드를 내부적으로 액세스해야하고 외부 액세스가 아닌 경우에는 예를 들어 저장 장치를 통해 전달할 수 있습니다.

function getBets() internal returns (Bet[] storage _r) { 
    _v = bets; 
} 
+0

구조체 배열을 반환하는 것이 일반적이지 않은 경우이 잘못 생각할 수도 있습니다. 내가하려는 일은 사용자가 목록에 번호를 추가 할 수 있으며 추가 한 사람과 함께 모든 번호를 표시하려고합니다. – kayla

+0

문자열로 구성하여 문자열 만 반환 할 수 있습니까? –