我使用的是Solity0.5.16,在一个契约的函数中,我想调用另一个契约的initialize()方法。此方法不接受任何参数。
contract.call.value(0)(
abi.encodeWithSignature("initialize()",);
);但是,上面的方法没有正确编译。
发布于 2021-09-10 07:54:49
contract --例如,将其替换为externalContract。encodeWithSignature()函数中的逗号,。encodeWithSignature()之后删除分号;。这将导致另一个解析错误,因为您仍在call函数.中构建一个参数。
pragma solidity 0.5.16;
contract MyContract {
function foo() external {
address externalContract = address(0x123);
(bool success, bytes memory returnedData) = externalContract.call.value(0)(
abi.encodeWithSignature("initialize()")
);
}
}发布于 2022-04-22 09:50:29
现在不推荐使用上面的语法了,您可以使用以下方法:
pragma solidity ^0.8.0;
contract MyContract {
function foo() external {
address externalContract = address(0x123);
(bool success, bytes memory returnedData) = externalContract.call{value: 0}(abi.encodeWithSignature("initialize()"));
}
}https://stackoverflow.com/questions/69127399
复制相似问题