Solidity

函式在 ropsten 上不返回值

  • November 25, 2019

當我在 ganache 本地鏈上執行它時,這段程式碼完美地返回了地址,但是當我在 ropsten 上執行它時,它只返回一個“-”

知道問題是什麼嗎?

function newMatch(uint _matchId,uint _noOfGames,uint _oddsOfA, uint _oddsOfB) public returns(address newContract)
     {
       Match c = new Match(_matchId,_noOfGames,_oddsOfA,_oddsOfB);
       matchTracker[_matchId] = addr;
       count++;
       return address(c);
     }

您的函式很可能確實返回值,您只是無法擷取它。當從外部擁有的地址在鏈上呼叫函式時,擷取函式返回的值並不容易。嘗試從其他智能合約呼叫該函式。

另一種方法是在返回結果的同時記錄結果值,如下所示:

<!-- language: lang-solidity -->

event NewMatch (address indexed match);

function newMatch(uint _matchId,uint _noOfGames,uint _oddsOfA, uint _oddsOfB)
public returns(address newContract)
{
 Match c = new Match(_matchId,_noOfGames,_oddsOfA,_oddsOfB);
 matchTracker[_matchId] = addr;
 count++;
 emit NewMatch (address (c));
 return address(c);
}

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