diff options
author | Alex Beregszaszi <alex@rtfs.hu> | 2016-10-16 05:34:35 +0800 |
---|---|---|
committer | Alex Beregszaszi <alex@rtfs.hu> | 2016-10-19 21:02:50 +0800 |
commit | 1b3713742f10a4749e6f15b9344d8ffaef19790e (patch) | |
tree | 97e978d750a2305d2cb8d4086c78c434a2af29fa /docs | |
parent | f0f2d5a612e0f646c7d6cec0092d2713ba9d686b (diff) | |
download | dexon-solidity-1b3713742f10a4749e6f15b9344d8ffaef19790e.tar dexon-solidity-1b3713742f10a4749e6f15b9344d8ffaef19790e.tar.gz dexon-solidity-1b3713742f10a4749e6f15b9344d8ffaef19790e.tar.bz2 dexon-solidity-1b3713742f10a4749e6f15b9344d8ffaef19790e.tar.lz dexon-solidity-1b3713742f10a4749e6f15b9344d8ffaef19790e.tar.xz dexon-solidity-1b3713742f10a4749e6f15b9344d8ffaef19790e.tar.zst dexon-solidity-1b3713742f10a4749e6f15b9344d8ffaef19790e.zip |
Document constant functions
Diffstat (limited to 'docs')
-rw-r--r-- | docs/contracts.rst | 27 | ||||
-rw-r--r-- | docs/frequently-asked-questions.rst | 14 |
2 files changed, 24 insertions, 17 deletions
diff --git a/docs/contracts.rst b/docs/contracts.rst index 986d05b3..e2fdf3f3 100644 --- a/docs/contracts.rst +++ b/docs/contracts.rst @@ -421,9 +421,9 @@ change by overriding). .. index:: ! constant -********** -Constants -********** +************************ +Constant State Variables +************************ State variables can be declared as constant (this is not yet implemented for array and struct types and not possible for mapping types). @@ -442,6 +442,27 @@ for these variables and every occurrence is replaced by their constant value. The value expression can only contain integer arithmetics. +****************** +Constant Functions +****************** + +Functions can be declared constant. These functions promise not to modify the state. + +:: + + pragma solidity ^0.4.0; + + contract C { + function f(uint a, uint b) constant returns (uint) { + return a * (b + 42); + } + } + +.. note:: + Accessor methods are marked constant. + +.. warning:: + The compiler does not enforce yet that a constant method is not modifying state. .. index:: ! fallback function, function;fallback diff --git a/docs/frequently-asked-questions.rst b/docs/frequently-asked-questions.rst index e0bdcfb4..6d47e4a7 100644 --- a/docs/frequently-asked-questions.rst +++ b/docs/frequently-asked-questions.rst @@ -97,20 +97,6 @@ Its type is the type of the contract. Since any contract type basically inherits ``address`` type, ``this`` is always convertible to ``address`` and in this case contains its own address. -What is the difference between a function marked ``constant`` and one that is not? -================================================================================== - -``constant`` functions can perform some action and return a value, but cannot -change state (this is not yet enforced by the compiler). In other words, a -constant function cannot save or update any variables within the contract or wider -blockchain. These functions are called using ``c.someFunction(...)`` from -geth or any other web3.js environment. - -"non-constant" functions (those lacking the ``constant`` specifier) must be called -with ``c.someMethod.sendTransaction({from:eth.accounts[x], gas: 1000000});`` -That is, because they can change state, they have to have a gas -payment sent along to get the work done. - Get a contract to return its funds to you (not using ``selfdestruct(...)``). ============================================================================ |