繁体   English   中英

发送以太币时如何检查合约调用的返回值?

[英]How to check the return value of a contract call when sending Ethers?

当调用这样的合同时:

if(!contractname.somefunction()) throw;

它同时检查堆栈(检查合约调用是否失败)以及合约调用是否成功但在 memory 中返回 false。

但是当使用.value().send()时,它只检查合约调用是否失败,这意味着它不会检查 memory 中的返回值。

那么如何在发送以太币的同时检查 memory 中的返回值呢?

一个好方法是通过Events 对于那个somefunction() ,你可以有如下的东西:

contract Contractname {

  event ReturnValue(uint);

  function somefunction(){
    uint result;

    //...some computation right here

    emit ReturnValue(result);
  }

}

在同时获取返回值的同时发送 Ether 是不可能的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM