-1

当调用这样的合同时:

if(!contractname.somefunction()) throw;

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

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

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

4

1 回答 1

-1

一个好方法是通过Events。为此somefunction(),您可以拥有以下内容:

contract Contractname {

  event ReturnValue(uint);

  function somefunction(){
    uint result;

    //...some computation right here

    emit ReturnValue(result);
  }

}

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

于 2019-11-07T14:47:58.363 回答