mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #4859 from ethereum/input-output
Create section that covers input and output function types
This commit is contained in:
commit
bcef78b4ce
@ -19,6 +19,7 @@ on its type. To handle any unexpected values, you should use the :ref:`revert fu
|
|||||||
tuple with a second `bool` value denoting success.
|
tuple with a second `bool` value denoting success.
|
||||||
|
|
||||||
.. index:: ! value type, ! type;value
|
.. index:: ! value type, ! type;value
|
||||||
|
.. _value-types:
|
||||||
|
|
||||||
Value Types
|
Value Types
|
||||||
===========
|
===========
|
||||||
@ -728,6 +729,8 @@ Another example that uses external function types::
|
|||||||
|
|
||||||
.. index:: ! type;reference, ! reference type, storage, memory, location, array, struct
|
.. index:: ! type;reference, ! reference type, storage, memory, location, array, struct
|
||||||
|
|
||||||
|
.. _reference-types:
|
||||||
|
|
||||||
Reference Types
|
Reference Types
|
||||||
===============
|
===============
|
||||||
|
|
||||||
@ -761,14 +764,17 @@ non-persistent area where function arguments are stored, and behaves mostly like
|
|||||||
depending on the kind of variable, function type, etc., but all complex types must now give an explicit
|
depending on the kind of variable, function type, etc., but all complex types must now give an explicit
|
||||||
data location.
|
data location.
|
||||||
|
|
||||||
|
.. _data-location-assignment:
|
||||||
|
|
||||||
|
Data location and assignment behaviour
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Data locations are not only relevant for persistency of data, but also for the semantics of assignments:
|
Data locations are not only relevant for persistency of data, but also for the semantics of assignments:
|
||||||
assignments between storage and memory (or from calldata) always create an independent copy.
|
|
||||||
Assignments from memory to memory only create references. This means that changes to one memory variable
|
* Assignments between ``storage`` and ``memory`` (or from ``calldata``) always create an independent copy.
|
||||||
are also visible in all other memory variables that refer to the same data.
|
* Assignments from ``memory`` to ``memory`` only create references. This means that changes to one memory variable are also visible in all other memory variables that refer to the same data.
|
||||||
Assignments from storage to a local storage variables also only assign a reference.
|
* Assignments from ``storage`` to a local storage variable also only assign a reference.
|
||||||
In contrast, all other assignments to storage always copy. Examples for this case
|
* All other assignments to ``storage`` always copy. Examples for this case are assignments to state variables or to members of local variables of storage struct type, even if the local variable itself is just a reference.
|
||||||
are assignments to state variables or to members of local variables of storage struct type, even
|
|
||||||
if the local variable itself is just a reference.
|
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
@ -1120,9 +1126,10 @@ assigning it to a local variable, as in
|
|||||||
``campaigns[campaignID].amount = 0``.
|
``campaigns[campaignID].amount = 0``.
|
||||||
|
|
||||||
.. index:: !mapping
|
.. index:: !mapping
|
||||||
|
.. _mapping-types:
|
||||||
|
|
||||||
Mappings
|
Mapping Types
|
||||||
--------
|
=============
|
||||||
|
|
||||||
You declare mapping types with the syntax ``mapping(_KeyType => _ValueType)``.
|
You declare mapping types with the syntax ``mapping(_KeyType => _ValueType)``.
|
||||||
The ``_KeyType`` can be any elementary type. This means it can be any of
|
The ``_KeyType`` can be any elementary type. This means it can be any of
|
||||||
|
Loading…
Reference in New Issue
Block a user