Solidity

當試圖在建構子內的數組中設置一些隨機值時,呼叫函式應該是應付的=>

  • August 26, 2022

具有 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

建構子()應付{}

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