Solidity
發送 eth 時不會呼叫備份函式
使用此程式碼,在創建合約時(在 tx 中發送一些 eth),不應該呼叫 fallback 函式嗎?那麼狀態變數回饋不應該是“正確呼叫備份函式”嗎?我錯過了什麼?我在 Javascript VM 上執行契約。
contract MyToken { mapping (address => uint256) public balanceOf; string name; string symbol; uint8 decimals; string fallback; function MyToken(uint256 initialSupply, string tokenName, string tokenSymbol) payable { balanceOf[msg.sender] = initialSupply; name = tokenName; symbol = tokenSymbol; decimals = 18; fallback = "Fallback not called!"; } function feedBack() { fallback = "Fallback function correctly called!"; } function getFeedback() constant returns(string) { return fallback; } function() payable { feedBack(); } }
合約部署的輸出:
當您創建合約(在 remix + javascript VM 中)並在交易中設置一些乙太幣時,您將執行然後合約的建構子
function MyToken
將返回fallback = "Fallback not called!";
以執行您的備份函式,您需要向合約發送具有價值的交易(沒有 fct 呼叫)因為我知道這在 javscript VM 中是不可能的(您需要在本地部署它,或者您可以直接呼叫回退函式)。