1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

doc: mention module shadowing (#7051)

This commit is contained in:
Lukas Neubert 2020-12-01 16:09:33 +01:00 committed by GitHub
parent 5b6eb7b2c9
commit 4f540e6ac3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 10 deletions

View File

@ -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`) In production mode (enabled by passing the `-prod` flag to v `v -prod foo.v`)
it will not compile at all (like in Go). it will not compile at all (like in Go).
<!-- this should be `failcompile`, but it compiles -->
```v ```v
fn main() { fn main() {
a := 10 a := 10
if true { if true {
a := 20 // error: shadowed variable a := 20 // error: redefinition of `a`
} }
// warning: unused variable `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 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. 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 ## Types
### Primitive types ### Primitive types

View File

@ -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 wget https://github.com/vlang/v/releases/latest/download/linux.zip
unzip linux.zip unzip v_linux.zip
cd v cd v
sudo ./v symlink sudo ./v symlink
``` ```
Now V should be globally available on your system. 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 If you use a BSD system, Solaris, Android, or simply want to install V
from source, follow the simple instructions here: from source, follow the simple instructions here:
https://github.com/vlang/v#installing-v-from-source https://github.com/vlang/v#installing-v-from-source