[英]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.