Arrays

分配數組參數

  • July 9, 2018

嘗試全域分配數組參數

bytes32[] params; (params[0], params[1]) = ("p1", "p2");

結果是ParserError: Function, variable, struct or modifier declaration expected.

移入函式時不再出現解析器錯誤;但是,當呼叫該函式時,會發生以下錯誤Error: VM Exception while processing transaction: invalid opcode

請指教。

第一個錯誤是因為您不能在函式之外進行分配。

將其移至函式是正確的,但您正在寫入數組末尾。params以長度 0 開頭,但您正在嘗試寫入它。

您可以通過直接設置長度來解決此問題:

params.length = 2;
(params[0], params[1]) = ("p1", "p2");

我認為使用起來更直接push

params.push("p1");
params.push("p2");

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