Arrays

如何用空列表初始化?

  • June 8, 2017

我不怎麼用空數組初始化變數?

我有兩個結構:

   struct Concour {
   string theme;
   address admin;
   uint dateEndInscription;
   uint dateEndBet;
   uint dateResults;
   uint phase;
   Vin[] validatedVins;
   Vin[] proposedVins;
}

struct Vin {
   string url;
   uint nb_view_begin;
   uint nb_view_end;
}

我的功能

function createConcour(string _theme, uint _dateEndInscription, uint _dateEndBet, uint _dateResults) {
       concours.push(Concour({
           theme: _theme,
           admin: msg.sender,
           dateEndInscription: _dateEndInscription,
           dateEndBet: _dateEndBet,
           dateResults: _dateResults,
           phase: 1,
           validatedVins: //empty list of vins hir,
           proposedVins: //maybe like this ? new Vin[](0)
       }));
   }

啟動陣列new string[](0)將起作用。但是對於一個結構它不會。我猜編譯器會告訴你類似的事情。

struct Test.Vin 記憶體類型的複制

$$ $$尚不支持記憶體到儲存。

這裡的解決方案不是將 Vin 數組儲存到 Concour 中,而是儲存一個包含對您的 Vin 的鍵(或引用)的 bytes32 數組。

struct Concour {
   string theme;
   address admin;
   uint dateEndInscription;
   uint dateEndBet;
   uint dateResults;
   uint phase;
   bytes32[] validatedVins; // list of Vin keys
   bytes32[] proposedVins; // list of Vin keys
}

然後您必須編寫 setter 和 getter 來檢索和寫入數據。我建議您查看Medium 上的這篇文章,以獲取有關此模式的更多資訊。

引用自:https://ethereum.stackexchange.com/questions/17502