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 | ||||
| 
 | ||||
| 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 | ||||
| ========== | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user