参考文档:
当调用一个合约的方法。这个方法想返回值。有2种情况:
1、如果这个方法中修改了合约数据。那只能通过event返回值。
2、如果这个方法没有修改区块数据,那直接可以返回值。
例子
pragma solidity ^0.4.25;
contract Assert{
}
contract TestReturn {
Assert sig ;
function check() public returns(uint256) {
sig = new Assert();
return uint256(6);
}
}
调用上面的check()方法就不能返回值。因为修改了区块数据。
pragma solidity ^0.4.25;
contract Assert{
}
contract TestReturn {
Assert sig ;
event CreateAssert(Assert _sig,uint256 id);
function check() public returns(uint256) {
sig = new Assert();
emit CreateAssert(sig,uint256(6));
}
}
所以写代码的时候,在修改区块数据的方法中,就没必要return数据了。