Solidity
獲取低級呼叫的返回值
我想獲得低級呼叫的返回值。
(bool success, ) = address(0x1234...7890).call{value:0}(callData);
這篇文章討論了一個聽起來應該可以工作的解決方案,但它沒有復選標記,我無法讓原始碼工作,因為 toBytes 函式中的最後一個複制命令不存在。我嘗試使用 mload 和 mstore 在solidity 組裝中進行試驗以製作該複製命令,但我做不到。
copy(_addr, btsptr, _len);
有沒有人有一個真正適用於此的完整解決方案?或者任何人都可以幫我完成上面連結的文章中發布的虛擬碼嗎?
從 solc 0.5 開始,
call
返回兩個值:
bool success
, 表示函式是否成功完成bytes memory data
,這是函式返回的實際數據逗號
(bool success, ) = ...
表示您已經在使用 solc 0.5 或更高版本。所以只需將其更改為
(bool success, bytes memory data) = ...
, 並data
根據需要使用。