首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Contract functionA调用contract functionB,functionA可以存储价值

Contract functionA调用contract functionB,functionA可以存储价值
EN

Stack Overflow用户
提问于 2020-02-16 17:45:19
回答 1查看 61关注 0票数 0

我有一个关于处理函数值的问题。

喜欢这个标题..

我已经知道合约的函数调用其他合约的函数依赖于:

代码语言:javascript
复制
addr.call(abi.encodeWithSignature("function(parameter_type)", parameter ));

但是,如果我想临时(内存)处理条件的函数值(例如:bool)。

我看过abi.encodePacked(),但我甚至不知道什么参数反馈给我(编译错误,不同的参数类型),我甚至不能存储它。

有些文章只写字节,uint,但我只想写条件(Bool)。

EN

回答 1

Stack Overflow用户

发布于 2020-02-21 03:02:09

除非您想保留msg.sender,否则您不需要执行该.call。

如果msg.sender对您无关紧要,我建议您查看interfaces。现在,您要做的是创建一个带有您想要调用的functionB定义的接口,然后调用它。

示例:

(一些已部署的合同)

代码语言:javascript
复制
contract MySecondContract {
  function functionB() public returns(bool) {
    return true;
  }
}

(获取已部署的合同地址并在代码中使用它,如下所示)

代码语言:javascript
复制
interface IMySecondContract {
  function functionB() external returns(bool);
}

contract MyFirstContract {
  function functionA() public returns(bool) {
      bool result = IMySecondContract(MySecondContract-address-here).functionB();
      return result;
  }
}

如果您确实想继续使用.call,here,您可以看到.call方法返回两个值。

就像这样

代码语言:javascript
复制
(bool success, bytes myReturn) = addr.call(...);

然后是this,也许能行得通。

另一个可能有帮助的东西是this new way of debugging

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60247222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档