Arrays
如何用空列表初始化?
我不怎麼用空數組初始化變數?
我有兩個結構:
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 上的這篇文章,以獲取有關此模式的更多資訊。