2017-09-26 10 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

それを文字列として構築し、文字列だけを返すことができますか? –

関連する問題