docs: add the topics Hoistings and Closures (#12021)
							parent
							
								
									e3d379a1eb
								
							
						
					
					
						commit
						6cffcf515a
					
				| 
						 | 
					@ -65,6 +65,7 @@ For more details and troubleshooting, please visit the [vab GitHub repository](h
 | 
				
			||||||
* [Comments](#comments)
 | 
					* [Comments](#comments)
 | 
				
			||||||
* [Functions](#functions)
 | 
					* [Functions](#functions)
 | 
				
			||||||
    * [Returning multiple values](#returning-multiple-values)
 | 
					    * [Returning multiple values](#returning-multiple-values)
 | 
				
			||||||
 | 
					    * [Hoistings](#hoistings)
 | 
				
			||||||
* [Symbol visibility](#symbol-visibility)
 | 
					* [Symbol visibility](#symbol-visibility)
 | 
				
			||||||
* [Variables](#variables)
 | 
					* [Variables](#variables)
 | 
				
			||||||
* [V types](#v-types)
 | 
					* [V types](#v-types)
 | 
				
			||||||
| 
						 | 
					@ -95,6 +96,7 @@ For more details and troubleshooting, please visit the [vab GitHub repository](h
 | 
				
			||||||
    * [Mutable arguments](#mutable-arguments)
 | 
					    * [Mutable arguments](#mutable-arguments)
 | 
				
			||||||
    * [Variable number of arguments](#variable-number-of-arguments)
 | 
					    * [Variable number of arguments](#variable-number-of-arguments)
 | 
				
			||||||
    * [Anonymous & higher-order functions](#anonymous--higher-order-functions)
 | 
					    * [Anonymous & higher-order functions](#anonymous--higher-order-functions)
 | 
				
			||||||
 | 
					    * [Closures](#closures)
 | 
				
			||||||
* [References](#references)
 | 
					* [References](#references)
 | 
				
			||||||
* [Constants](#constants)
 | 
					* [Constants](#constants)
 | 
				
			||||||
* [Builtin functions](#builtin-functions)
 | 
					* [Builtin functions](#builtin-functions)
 | 
				
			||||||
| 
						 | 
					@ -264,6 +266,8 @@ Again, the type comes after the argument's name.
 | 
				
			||||||
Just like in Go and C, functions cannot be overloaded.
 | 
					Just like in Go and C, functions cannot be overloaded.
 | 
				
			||||||
This simplifies the code and improves maintainability and readability.
 | 
					This simplifies the code and improves maintainability and readability.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Hoistings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Functions can be used before their declaration:
 | 
					Functions can be used before their declaration:
 | 
				
			||||||
`add` and `sub` are declared after `main`, but can still be called from `main`.
 | 
					`add` and `sub` are declared after `main`, but can still be called from `main`.
 | 
				
			||||||
This is true for all declarations in V and eliminates the need for header files
 | 
					This is true for all declarations in V and eliminates the need for header files
 | 
				
			||||||
| 
						 | 
					@ -2137,6 +2141,8 @@ fn main() {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Closures
 | 
				
			||||||
 | 
					
 | 
				
			||||||
V supports closures too.
 | 
					V supports closures too.
 | 
				
			||||||
This means that anonymous functions can inherit variables from the scope they were created in.
 | 
					This means that anonymous functions can inherit variables from the scope they were created in.
 | 
				
			||||||
They must do so explicitly by listing all variables that are inherited.
 | 
					They must do so explicitly by listing all variables that are inherited.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue