Solidity
當試圖在建構子內的數組中設置一些隨機值時,呼叫函式應該是應付的=>
具有 2 個數組的基本智能合約
// This works uint[5] public mfb; uint[5] public mfa; // And this doesn't uint[] public mfb; uint[5] public mfa;
我試圖在建構子內的索引 0 處為數組設置值,但是當我嘗試這樣做時,沒有部署契約。我收到此錯誤:
事務已恢復到初始狀態。注意:如果您發送值並且您發送的值應該小於您目前的餘額,則呼叫的函式應該是應付的。調試事務以獲取更多資訊。
說“建構子不支付”的錯誤是一般錯誤消息。通常它是由建構子內部的某些東西破壞引起的。
如果建構子是註釋掉的程式碼,那麼原因是您
mfb
在添加元素之前使用了數組。它最初是空的,因此mfb[0]
會導致訪問越界並且執行恢復。constructor() { mfb.push(1000); // Add an element mfb[0] = 25; // now position = 0 is valid, and can be modified }
看起來你在部署合約時發送了乙太幣,呼叫未標記為的函式時不能發送乙太幣
payable
,換句話說,只有當函式標記為時你才能發送乙太幣payable
。建構子()應付{}