mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
docs: add compile time types (#18761)
This commit is contained in:
parent
3f5995ace8
commit
2e9f8e6633
34
doc/docs.md
34
doc/docs.md
@ -169,8 +169,9 @@ by using any of the following commands in a terminal:
|
|||||||
* [Attributes](#attributes)
|
* [Attributes](#attributes)
|
||||||
* [Conditional compilation](#conditional-compilation)
|
* [Conditional compilation](#conditional-compilation)
|
||||||
* [Compile time pseudo variables](#compile-time-pseudo-variables)
|
* [Compile time pseudo variables](#compile-time-pseudo-variables)
|
||||||
* [Compile-time reflection](#compile-time-reflection)
|
* [Compile time reflection](#compile-time-reflection)
|
||||||
* [Compile time code](#compile-time-code)
|
* [Compile time code](#compile-time-code)
|
||||||
|
* [Compile time types](#compile-time-types)
|
||||||
* [Environment specific files](#environment-specific-files)
|
* [Environment specific files](#environment-specific-files)
|
||||||
* [Memory-unsafe code](#memory-unsafe-code)
|
* [Memory-unsafe code](#memory-unsafe-code)
|
||||||
* [Structs with reference fields](#structs-with-reference-fields)
|
* [Structs with reference fields](#structs-with-reference-fields)
|
||||||
@ -2957,7 +2958,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)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -5503,10 +5504,12 @@ vm := vmod.decode( @VMOD_FILE ) or { panic(err) }
|
|||||||
eprintln('${vm.name} ${vm.version}\n ${vm.description}')
|
eprintln('${vm.name} ${vm.version}\n ${vm.description}')
|
||||||
```
|
```
|
||||||
|
|
||||||
### Compile-time reflection
|
### Compile time reflection
|
||||||
|
|
||||||
|
`$` is used as a prefix for compile time (also referred to as 'comptime') operations.
|
||||||
|
|
||||||
Having built-in JSON support is nice, but V also allows you to create efficient
|
Having built-in JSON support is nice, but V also allows you to create efficient
|
||||||
serializers for any data format. V has compile-time `if` and `for` constructs:
|
serializers for any data format. V has compile time `if` and `for` constructs:
|
||||||
|
|
||||||
```v
|
```v
|
||||||
struct User {
|
struct User {
|
||||||
@ -5531,8 +5534,6 @@ for a more complete example.
|
|||||||
|
|
||||||
### Compile time code
|
### Compile time code
|
||||||
|
|
||||||
`$` is used as a prefix for compile-time operations.
|
|
||||||
|
|
||||||
#### `$if` condition
|
#### `$if` condition
|
||||||
|
|
||||||
```v
|
```v
|
||||||
@ -5719,6 +5720,27 @@ x.v:4:5: error: Linux is not supported
|
|||||||
6 |
|
6 |
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Compile time types
|
||||||
|
|
||||||
|
Compile time types group multiple types into a general higher-level type. This is useful in
|
||||||
|
functions with generic parameters, where the input type must have a specific property, for example
|
||||||
|
the `.len` attribute in arrays.
|
||||||
|
|
||||||
|
V supports the following compile time types:
|
||||||
|
|
||||||
|
- `$alias` => matches [Type aliases](#type-aliases).
|
||||||
|
- `$array` => matches [Arrays](#arrays) and [Fixed Size Arrays](#fixed-size-arrays).
|
||||||
|
- `$enum` => matches [Enums](#enums).
|
||||||
|
- `$float` => matches `f32`, `f64` and float literals.
|
||||||
|
- `$function` => matches [Function Types](#function-types).
|
||||||
|
- `$int` => matches `int`, `i8`, `i16`, `i32`, `i64`, `u8`, `u16`, `u32`, `u64`, `isize`, `usize`
|
||||||
|
and integer literals.
|
||||||
|
- `$interface` => matches [Interfaces](#interfaces).
|
||||||
|
- `$map` => matches [Maps](#maps).
|
||||||
|
- `$option` => matches [Option Types](#optionresult-types-and-error-handling).
|
||||||
|
- `$struct` => matches [Structs](#structs).
|
||||||
|
- `$sumtype` => matches [Sum Types](#sum-types).
|
||||||
|
|
||||||
### Environment specific files
|
### Environment specific files
|
||||||
|
|
||||||
If a file has an environment-specific suffix, it will only be compiled for that environment.
|
If a file has an environment-specific suffix, it will only be compiled for that environment.
|
||||||
|
Loading…
Reference in New Issue
Block a user