mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #618 from chriseth/inlineArrays
Document inline arrays.
This commit is contained in:
commit
63b6305689
@ -364,6 +364,44 @@ the ``.length`` member.
|
||||
}
|
||||
}
|
||||
|
||||
.. index:: ! array;literals, !inline;arrays
|
||||
|
||||
Array Literals / Inline Arrays
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Array literals are arrays that are written as an expression and are not
|
||||
assigned to a variable right away.
|
||||
|
||||
::
|
||||
|
||||
contract C {
|
||||
function f() {
|
||||
g([uint(1), 2, 3]);
|
||||
}
|
||||
function g(uint[3] _data) {
|
||||
// ...
|
||||
}
|
||||
}
|
||||
|
||||
The type of an array literal is a memory array of fixed size whose base
|
||||
type is the common type of the given elements. The type of ``[1, 2, 3]`` is
|
||||
``uint8[3] memory``, because the type of each of these constants is ``uint8``.
|
||||
Because of that, it was necessary to convert the first element in the example
|
||||
above to ``uint``. Note that currently, fixed size memory arrays cannot
|
||||
be assigned to dynamically-sized memory arrays, i.e. the following is not
|
||||
possible:
|
||||
|
||||
::
|
||||
|
||||
contract C {
|
||||
function f() {
|
||||
// The next line creates a type error because uint[3] memory
|
||||
// cannot be converted to uint[] memory.
|
||||
uint[] x = [uint(1), 3, 4];
|
||||
}
|
||||
|
||||
It is planned to remove this restriction in the future but currently creates
|
||||
some complications because of how arrays are passed in the ABI.
|
||||
|
||||
.. index:: ! array;length, length, push, !array;push
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user