doc: improve `const` docs (#8723)
parent
f23ffb8322
commit
99270c6935
21
doc/docs.md
21
doc/docs.md
|
@ -1767,7 +1767,7 @@ struct Node<T> {
|
||||||
|
|
||||||
## Constants
|
## Constants
|
||||||
|
|
||||||
```v oksyntax
|
```v
|
||||||
const (
|
const (
|
||||||
pi = 3.14
|
pi = 3.14
|
||||||
world = '世界'
|
world = '世界'
|
||||||
|
@ -1779,8 +1779,12 @@ println(world)
|
||||||
|
|
||||||
Constants are declared with `const`. They can only be defined
|
Constants are declared with `const`. They can only be defined
|
||||||
at the module level (outside of functions).
|
at the module level (outside of functions).
|
||||||
|
Constant values can never be changed. You can also declare a single
|
||||||
|
constant separately:
|
||||||
|
|
||||||
Constant values can never be changed.
|
```v
|
||||||
|
const e = 2.71828
|
||||||
|
```
|
||||||
|
|
||||||
V constants are more flexible than in most languages. You can assign more complex values:
|
V constants are more flexible than in most languages. You can assign more complex values:
|
||||||
|
|
||||||
|
@ -1806,7 +1810,7 @@ const (
|
||||||
g: 0
|
g: 0
|
||||||
b: 0
|
b: 0
|
||||||
}
|
}
|
||||||
// evaluate function call at compile-time
|
// evaluate function call at compile-time*
|
||||||
blue = rgb(0, 0, 255)
|
blue = rgb(0, 0, 255)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1814,15 +1818,18 @@ println(numbers)
|
||||||
println(red)
|
println(red)
|
||||||
println(blue)
|
println(blue)
|
||||||
```
|
```
|
||||||
|
\* WIP - for now function calls are evaluated at program start-up
|
||||||
|
|
||||||
Global variables are not allowed, so this can be really useful.
|
Global variables are not normally allowed, so this can be really useful.
|
||||||
|
|
||||||
|
### Required module prefix
|
||||||
|
|
||||||
When naming constants, `snake_case` must be used. In order to distinguish consts
|
When naming constants, `snake_case` must be used. In order to distinguish consts
|
||||||
from local variables, the full path to consts must be specified. For example,
|
from local variables, the full path to consts must be specified. For example,
|
||||||
to access the PI const, full `math.pi` name must be used both outside the `math`
|
to access the PI const, full `math.pi` name must be used both outside the `math`
|
||||||
module, and inside it. That restriction is relaxed only for the `main` module
|
module, and inside it. That restriction is relaxed only for the `main` module
|
||||||
(the one containing your `fn main()`, where you can use the shorter name of the
|
(the one containing your `fn main()`), where you can use the unqualified name of
|
||||||
constants too, i.e. just `println(numbers)`, not `println(main.numbers)` .
|
constants defined there, i.e. `numbers`, rather than `main.numbers`.
|
||||||
|
|
||||||
vfmt takes care of this rule, so you can type `println(pi)` inside the `math` module,
|
vfmt takes care of this rule, so you can type `println(pi)` inside the `math` module,
|
||||||
and vfmt will automatically update it to `println(math.pi)`.
|
and vfmt will automatically update it to `println(math.pi)`.
|
||||||
|
@ -1832,11 +1839,11 @@ Many people prefer all caps consts: `TOP_CITIES`. This wouldn't work
|
||||||
well in V, because consts are a lot more powerful than in other languages.
|
well in V, because consts are a lot more powerful than in other languages.
|
||||||
They can represent complex structures, and this is used quite often since there
|
They can represent complex structures, and this is used quite often since there
|
||||||
are no globals:
|
are no globals:
|
||||||
-->
|
|
||||||
|
|
||||||
```v oksyntax
|
```v oksyntax
|
||||||
println('Top cities: ${top_cities.filter(.usa)}')
|
println('Top cities: ${top_cities.filter(.usa)}')
|
||||||
```
|
```
|
||||||
|
-->
|
||||||
|
|
||||||
## Builtin functions
|
## Builtin functions
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue