doc: mention module shadowing (#7051)
							parent
							
								
									5b6eb7b2c9
								
							
						
					
					
						commit
						4f540e6ac3
					
				
							
								
								
									
										14
									
								
								doc/docs.md
								
								
								
								
							
							
						
						
									
										14
									
								
								doc/docs.md
								
								
								
								
							|  | @ -297,11 +297,12 @@ In development mode the compiler will warn you that you haven't used the variabl | |||
| In production mode (enabled by passing the `-prod` flag to v – `v -prod foo.v`) | ||||
| it will not compile at all (like in Go). | ||||
| 
 | ||||
| <!-- this should be `failcompile`, but it compiles --> | ||||
| ```v | ||||
| fn main() { | ||||
|     a := 10 | ||||
|     if true { | ||||
|         a := 20 // error: shadowed variable | ||||
|         a := 20 // error: redefinition of `a` | ||||
|     } | ||||
|     // warning: unused variable `a` | ||||
| } | ||||
|  | @ -310,6 +311,17 @@ fn main() { | |||
| Unlike most languages, variable shadowing is not allowed. Declaring a variable with a name | ||||
| that is already used in a parent scope will cause a compilation error. | ||||
| 
 | ||||
| You can shadow imported modules though, as it is very useful in some situations: | ||||
| ```v ignore | ||||
| import ui | ||||
| import gg | ||||
| 
 | ||||
| fn draw(ctx &gg.Context) { | ||||
|     gg := ctx.parent.get_ui().gg | ||||
|     gg.draw_rect(...) | ||||
| } | ||||
| ``` | ||||
| 
 | ||||
| ## Types | ||||
| 
 | ||||
| ### Primitive types | ||||
|  |  | |||
|  | @ -24,14 +24,14 @@ The code is available <a href='https://github.com/vlang/v/tree/master/tutorials/ | |||
| 
 | ||||
| ``` | ||||
| wget https://github.com/vlang/v/releases/latest/download/linux.zip | ||||
| unzip linux.zip | ||||
| unzip v_linux.zip | ||||
| cd v | ||||
| sudo ./v symlink | ||||
| ``` | ||||
| 
 | ||||
| Now V should be globally available on your system. | ||||
| 
 | ||||
| > On macOS use `macos.zip`, on Windows - `windows.zip`. | ||||
| > On macOS use `v_macos.zip`, on Windows - `v_windows.zip`. | ||||
| If you use a BSD system, Solaris, Android, or simply want to install V | ||||
| from source, follow the simple instructions here: | ||||
| https://github.com/vlang/v#installing-v-from-source | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue