mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
doc: add a section about input parameters and output parameters
This commit is contained in:
parent
27ed2b70cc
commit
936bade46f
@ -2,6 +2,53 @@
|
|||||||
Expressions and Control Structures
|
Expressions and Control Structures
|
||||||
##################################
|
##################################
|
||||||
|
|
||||||
|
.. index:: ! parameter, parameter;input, parameter;output
|
||||||
|
|
||||||
|
Input Parameters and Output Parameters
|
||||||
|
======================================
|
||||||
|
|
||||||
|
Like in Javascript and in C, functions may take parameters as input;
|
||||||
|
unlike in Javascript and C, they may also return arbitrary number of
|
||||||
|
parameters as output.
|
||||||
|
|
||||||
|
Input Parameters
|
||||||
|
----------------
|
||||||
|
|
||||||
|
The input parameters are declared type followed
|
||||||
|
by name (though unused input parameters do not need names).
|
||||||
|
For example, suppose we want our contract to
|
||||||
|
accept one kind of external calls with two integers, we would write
|
||||||
|
something like::
|
||||||
|
|
||||||
|
contract Simple {
|
||||||
|
function taker(uint _a, uint _b) {
|
||||||
|
// do something with _a and _b.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Output Parameters
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
The output parameters can be declared with the same syntax after the
|
||||||
|
``returns`` keyword. For example, suppose we wished to return two results:
|
||||||
|
the sum and the product of the two given integers, then we would
|
||||||
|
write::
|
||||||
|
|
||||||
|
contract Simple {
|
||||||
|
function arithmetics(uint _a, uint _b) returns (uint o_sum, uint o_product) {
|
||||||
|
o_sum = _a + _b;
|
||||||
|
o_product = _a * _b;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
The names of output parameters can be omitted.
|
||||||
|
Return parameters are initialized to zero; if they are not explicitly
|
||||||
|
set, they stay to be zero.
|
||||||
|
|
||||||
|
Input parameters and output parameters can be used as expressions in
|
||||||
|
the function body. There, they are also usable in the left-hand side
|
||||||
|
of assignment.
|
||||||
|
|
||||||
.. index:: if, else, while, do/while, for, break, continue, return, switch, goto
|
.. index:: if, else, while, do/while, for, break, continue, return, switch, goto
|
||||||
|
|
||||||
Control Structures
|
Control Structures
|
||||||
@ -16,7 +63,15 @@ Parentheses can *not* be omitted for conditionals, but curly brances can be omit
|
|||||||
around single-statement bodies.
|
around single-statement bodies.
|
||||||
|
|
||||||
Note that there is no type conversion from non-boolean to boolean types as
|
Note that there is no type conversion from non-boolean to boolean types as
|
||||||
there is in C and JavaScript, so ``if (1) { ... }`` is *not* valid Solidity.
|
there is in C and JavaScript, so ``if (1) { ... }`` is *not* valid
|
||||||
|
Solidity.
|
||||||
|
|
||||||
|
Returning Multiple Values
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
When a function has multiple output parameters, ``return (v0, v1, ...,
|
||||||
|
vn)`` can return multiple values. The number of components must be
|
||||||
|
the same as the number of output parameters.
|
||||||
|
|
||||||
.. index:: ! function;call, function;internal, function;external
|
.. index:: ! function;call, function;internal, function;external
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user