Solidity

Solidity:錯誤編碼參數:錯誤:無效的 BigNumber 字元串

  • February 18, 2022

我剛剛開始通過觀看 youtube 影片 ( https://www.youtube.com/watch?v=M576WGiDBdQ )來學習 Solidity 。這是為什麼我不斷收到無效參數的重複問題?,但我無法用文章上的答案解決問題。而且我沒有足夠的聲譽發表評論。

整個程式碼如下。(它在影片上執行良好)

pragma solidity ^0.6.0;

contract SimpleStorage {
   
   // This will get initialized to 0!
   uint256 favoriteNumber;
   bool favoriteBool;

   struct People {
       uint256 favoriteNumber;
       string name;
   }
   
   People[] public people;
   mapping(string => uint256) public nameToFavoriteNumber;

   function store(uint256 _favoriteNumber) public {
       favoriteNumber = _favoriteNumber;
   }

   // view, pure
   function retrieve() public view returns(uint256) {
       favoriteNumber + favoriteNumber;
   }

   function addPerson(string memory _name, uint256 _favoriteNumber) public{    
       people.push(People(_favoriteNumber, _name));
       nameToFavoriteNumber[_name] = _favoriteNumber;
   }
   
}

其他功能正常工作,但訪問“人”不斷給我一個錯誤

呼叫 SimpleStorage.people 出錯:錯誤編碼參數:錯誤:無效的 BigNumber 字元串 (argument=“value” value="" code=INVALID_ARGUMENT version=bignumber/5.5.0)

kassé 在文章中建議(為什麼我不斷收到無效的論點?

當您在 people 變數上部署 put 0 並點擊它後,您可以使用 de addPerson 函式添加。此外,如果您想添加第二個人,則將 1 放入人員,然後再添加另一個

我嘗試修改程式碼如下:

People[0] public people;

People[1] public people;

它給了我以下資訊

contracts/SimpleStorage.sol:12:12: TypeError: Array with zero length specified.

contracts/SimpleStorage.sol:23:9: TypeError: Member "push" not found or not visible after
argument-dependent lookup in struct SimpleStorage.People storage ref[1] storage ref.

如果有任何其他建議,請告訴我。

我也在向fcc學習哈哈。不確定您是否仍然需要它,但以防萬一其他人也遇到類似問題。我不認為你應該改變“人

$$ 0 $$公眾;”或“人1公眾;” 只需將其保留為

People[] public people;

如果我沒記錯的話,您應該將此處的人員值更改為 0,因為預設情況下它是空白的。(freecodecamp的程式碼是正確的)

請將人物的索引值傳遞為 0,1 等以檢索對應的值。

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