mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Added content
This commit is contained in:
parent
08b7d4aebe
commit
52a8d7b3f5
@ -147,6 +147,57 @@ Scoping and Declarations
|
|||||||
|
|
||||||
.. index:: ! scoping, ! declarations
|
.. index:: ! scoping, ! declarations
|
||||||
|
|
||||||
|
In Solidity, a variable declared anywhere within a function will be in scope for the *entire function*, regardless of where it is declared.
|
||||||
|
This is in contrast to many languages where variables are only scoped where they are declared until the end of the semantic block.
|
||||||
|
As a result, the following code is illegal and cause the compiler to throw an error, `Identifier already declared.`::
|
||||||
|
|
||||||
|
contract ScopingErrors {
|
||||||
|
function scoping() {
|
||||||
|
uint i = 0;
|
||||||
|
|
||||||
|
while (i++ < 1) {
|
||||||
|
uint same1 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (i++ < 2) {
|
||||||
|
uint same1 = 0;// Illegal, second declaration of same1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function minimalScoping() {
|
||||||
|
{
|
||||||
|
uint same2 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
uint same2 = 0;// Illegal, second declaration of same2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function forLoopScoping() {
|
||||||
|
for (uint same3 = 0; same3 < 1; same3++) {
|
||||||
|
}
|
||||||
|
|
||||||
|
for (uint same3 = 0; same3 < 1; same3++) {// Illegal, second declaration of same3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
In addition to this, if a variable is declared, it will be initialized at the beginning of the function to its default value.
|
||||||
|
As a result, the following code is legal, despite being poorly written.::
|
||||||
|
|
||||||
|
function foo() returns (uint) {
|
||||||
|
uint bar = 5;
|
||||||
|
// baz is implicitly initialized as 0
|
||||||
|
if (true) {
|
||||||
|
bar += baz;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
uint baz = 10;// never executes
|
||||||
|
}
|
||||||
|
return bar;// returns 5
|
||||||
|
}
|
||||||
|
|
||||||
Exceptions
|
Exceptions
|
||||||
==========
|
==========
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user