solidity - 如何在没有参数的情况下使用 abi.encodeWithSignature 调用外部合约?
问题描述
我正在使用solidity 0.5.16,并且在合同的功能中,我想调用另一个合同的initialize()
方法。此方法不接受任何参数。
contract.call.value(0)(
abi.encodeWithSignature("initialize()",);
);
但是上述方法无法正确编译..
解决方案
不要使用保留关键字
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()")
);
}
}
推荐阅读
- javascript - 如何使用 angularjs 和 $localStorage 为 select2 初始化默认值
- javascript - 如何在 React 本机邮件链接中自动与邮件共享文档?
- postgresql - 使用 Windows 证书存储中的 Npgsql 加载客户端证书时,无法识别提供给包的凭据
- qt - #包括
文件未找到 - javascript - 遍历嵌套的对象数组和限制值
- mysql - 在布尔全文搜索中,两个短语与前导通配符 (*) 匹配
- kotlin - 如何在 Kotlin 中查看绑定多个布局
- c# - 如何在 .NET core 5 Web API 项目中自动格式化 API 响应?
- docker - 连接过程中的错误:此错误可能表明 docker 守护程序未运行
- azure-devops - 有没有办法将工件提要包名称和版本获取到管道参数?