Contract-Invocation

ParserError:預期的標識符,但得到了“地址”

  • June 16, 2019

我正在嘗試執行以下程式碼:

pragma solidity ^0.5.1;

contract contractA {
   function blah(int x, int y) public payable {}
}
contract contractB {
  function invokeContractA() { 
     address a = contractA.address(this);
     uint ValueToSend = 1234;  
     a.blah.value(ValueToSend)(2, 3);
  }  
}

我在 ocde 中遇到以下錯誤:

browser/callMethod.sol:7:31: ParserError: Expected identifier but got ‘address’ address a = contractA.address(this); ^—–^

從 ethereum.stackexchange 搜尋後,我找到了解決方案,現在我的合約 B 如下所示:

   contract contractB {
   function invokeContractA(address _addA) public  { 
       contractA a = contractA(_addA);
       uint ValueToSend = 1234;    
       a.blah.value(ValueToSend)(2, 3);
   }  
}

現在我在 remix ide 上收到以下錯誤:

browser/callMethod.sol:4:19:警告:未使用的函式參數。刪除或註釋掉變數名稱以消除此警告。函式 blah(int x, int y) 公共支付 {} ^—^

一些身體請指導我。

祖爾菲。

您看到的“錯誤”不是錯誤。這是一個警告。

正如警告所說,原因是未使用的參數。如果需要,您可以忽略警告,也可以通過刪除未使用的參數或僅刪除它們的名稱來解決它:

// Either this:
function blah() public payable {}

// Or this:
function blah(int, int) public payable {}

你的函式 blah 沒有做任何事情(基本上沒用),這就是錯誤所在。

你可以做的是,你可以像這樣從那個 blah 函式返回一些東西:

pragma solidity ^0.5.1;

contract contractA {
   function blah(int x, int y) public payable returns (int) {
       return x+y;
   }
}

祝你好運!

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