Web3js
如何從外部使用 ABIEncoderV2 將結構作為函式參數傳遞?
有這個程式碼:
struct UserScore { address user; uint score; uint time; } function getWithStruct(UserScore _user) public view returns (address, uint, uint) { return (_user.user, _user.score, _user.time); }
metamask 目前似乎不支持此功能。但是有解決方法嗎?對我來說,使用 metamask 的使用者可以將簽名數據以結構的形式傳輸是必要的。我能為它做些什麼?
您可以簡單地通過使用映射來存檔它,並從結構映射值返回,這樣不需要 ABIEncoderV2 :
程式碼:
struct UserScore { address user; uint score; uint time; } mapping(address=>UserScore) public userscore; function addUserScore(address _user, uint _score, uint _time)public returns (bool success){ userscore[msg.sender] = UserScore(_user,_score,_time); return true; } function getWithStruct(address _userAdress) public view returns (address, uint, uint) { return (userscore[_userAdress].user, userscore[_userAdress].score, userscore[_userAdress].time); }
希望這會幫助你。