Solidity语言中关于回退函数的定义:
- 回退函数是一个不接受任何参数也不返回任何值的特殊函数;
- 如果在对合约的调用中,没有其它函数与给定的函数标识符匹配时,回退函数会被调用;
- 每当合约接收到以太币,且没有
receive
函数时,回退函数会被调用; - 一个合约中最多可以有一个回退函数。
Receive函数
Receive是一个接收以太币函数,一个合约中最多可以有一个 receive
函数。在对合约转账时会执行 receive
函数,例如通过 transfer()
、send()
或 call()
。如果 receive
函数不存在,那么 fallback
回退函数会被调用。receive
函数的声明语法如下:
receive () external payable { ... }
Receive函数没有 function
关键字,没有参数也没有返回值,且必须是 external
可见性(允许外部合约调用)并具有 payable
可支付属性。
Fallback函数
回退函数的声明语法如下:
fallback () external [payable]
其中:
- 回退函数没有
function
关键字; - 回退函数必须是
external
可见性,即允许被外部合约调用; - 如果回退函数需要接收以太币,则必须标记为
payable