mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	Merge pull request #7909 from ethereum/docsChange4
[DOC] Some changes to functions.
This commit is contained in:
		
						commit
						d6e7202edf
					
				| @ -298,7 +298,8 @@ Below you can see an example of a Sink contract that uses function ``receive``. | ||||
| Fallback Function | ||||
| ================= | ||||
| 
 | ||||
| A contract can have at most one ``fallback`` function, declared using ``fallback () external [payable]``. | ||||
| A contract can have at most one ``fallback`` function, declared using ``fallback () external [payable]`` | ||||
| (without the ``function`` keyword). | ||||
| This function cannot have arguments, cannot return anything and must have ``external`` visibility. | ||||
| It is executed on a call to the contract if none of the other | ||||
| functions match the given function signature, or if no data was supplied at | ||||
| @ -306,19 +307,31 @@ all and there is no :ref:`receive Ether function <receive-ether-function>`. | ||||
| The fallback function always receives data, but in order to also receive Ether | ||||
| it must be marked ``payable``. | ||||
| 
 | ||||
| In the worst case, if a payable fallback function is also used in place of a receive function, it can only rely on 2300 gas being | ||||
| available (see :ref:`receive Ether function <receive-ether-function>` for a brief description of the implications of this). | ||||
| In the worst case, if a payable fallback function is also used in | ||||
| place of a receive function, it can only rely on 2300 gas being | ||||
| available (see :ref:`receive Ether function <receive-ether-function>` | ||||
| for a brief description of the implications of this). | ||||
| 
 | ||||
| Like any function, the fallback function can execute complex operations as long as there is enough gas passed on to it. | ||||
| Like any function, the fallback function can execute complex | ||||
| operations as long as there is enough gas passed on to it. | ||||
| 
 | ||||
| .. warning:: | ||||
|     A ``payable`` fallback function is also executed for plain Ether transfers, if no :ref:`receive Ether function <receive-ether-function>` | ||||
|     is present. It is recommended to always define a receive Ether function as well, if you define a payable fallback function | ||||
|     A ``payable`` fallback function is also executed for | ||||
|     plain Ether transfers, if no :ref:`receive Ether function <receive-ether-function>` | ||||
|     is present. It is recommended to always define a receive Ether | ||||
|     function as well, if you define a payable fallback function | ||||
|     to distinguish Ether transfers from interface confusions. | ||||
| 
 | ||||
| .. note:: | ||||
|     Even though the fallback function cannot have arguments, one can still use ``msg.data`` to retrieve | ||||
|     any payload supplied with the call. | ||||
|     After having checked the first four bytes of ``msg.data``, | ||||
|     you can use ``abi.decode`` together with the array slice syntax to | ||||
|     decode ABI-encoded data: | ||||
|     ``(c, d) = abi.decode(msg.data[4:], (uint256, uint256));`` | ||||
|     Note that this should only be used as a last resort and | ||||
|     proper functions should be used instead. | ||||
| 
 | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user