mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Documentation update.
This commit is contained in:
parent
bdbd3b158e
commit
c65d506811
@ -428,17 +428,22 @@ change by overriding).
|
||||
Constant State Variables
|
||||
************************
|
||||
|
||||
State variables can be declared as constant. In this case, they have to be
|
||||
assigned a value or expression which is a constant at compile time. Expressions
|
||||
State variables can be declared as ``constant``. In this case, they have to be
|
||||
assigned from an expression which is a constant at compile time. Any expression
|
||||
that accesses storage, blockchain data (e.g. ``now``, ``this.balance`` or
|
||||
``block.number``) or
|
||||
execution data (``msg.gas``) or make calls to external contracts are disallowed. Expressions
|
||||
that might have a side-effect on memory allocation are allowed, but those that
|
||||
might have a side-effect on other memory objects are not. This makes it possible
|
||||
to create constant memory arrays as lookup-tables
|
||||
(although this is not yet fully implemented).
|
||||
Expressions that depend on blockchain data like `now`, `this.balance` or
|
||||
`block.number` or perform any storage access are disallowed.
|
||||
might have a side-effect on other memory objects are not. The built-in functions
|
||||
``keccak256``, ``sha256``, ``ripemd160``, ``ecrecover``, ``addmod`` and ``mulmod``
|
||||
are allowed (ever though they do call external contracts).
|
||||
|
||||
The reason behind allowing side-effects on the memory allocator is that it
|
||||
should be possible to construct complex objects like e.g. lookup-tables.
|
||||
This feature is not yet fully usable.
|
||||
|
||||
The compiler does not reserve a storage slot for these variables and every occurrence is
|
||||
replaced by their constant value (which might be computed by the optimizer).
|
||||
replaced by the respective constant expression (which might be computed to a single value by the optimizer).
|
||||
|
||||
Not all types for constants are implemented at this time. The only supported types are
|
||||
value types and strings.
|
||||
|
Loading…
Reference in New Issue
Block a user