Contract-Invocation
ParserError:預期的標識符,但得到了“地址”
我正在嘗試執行以下程式碼:
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; } }
祝你好運!