Solidity
使用接收功能的 Solidity 警告
如果您聲明該
fallback() external payable
函式,則意味著您打算直接接收乙太幣,就像任何其他 EOA(外部擁有的帳戶)一樣。因此,Solidity 建議您也添加一個receive() external payable
功能。您可能知道,
receive
當乙太幣直接發送到合約(沒有指定任何函式)並且沒有提供任何數據時,該函式被執行。fallback
當乙太幣直接發送到合約而沒有指定任何函式並提供數據時,或者如果 EVM 無法辨識數據中的函式選擇器,或者receive
未聲明函式,則執行。出於這個原因,如果您打算直接接收乙太幣,請添加該
receive
函式,並添加該fallback
函式,但要處理傳入的數據(通常通過 訪問msg.data
)。實際上,您還可以為
fallback
函式使用另一種語法來顯式接收數據:fallback(bytes calldata input) external payable returns(bytes memory output) {}
該
receive
函式不支持這種重載。所以是的,這不是強制性的,但建議如果您添加其中一個功能,請添加另一個。