docs: add a unions section (#8873)
parent
e106dc3ad5
commit
cb7c5d58d9
40
doc/docs.md
40
doc/docs.md
|
@ -86,6 +86,7 @@ For more details and troubleshooting, please visit the [vab GitHub repository](h
|
||||||
|
|
||||||
</td><td width=33% valign=top>
|
</td><td width=33% valign=top>
|
||||||
|
|
||||||
|
* [Unions](#unions)
|
||||||
* [Functions 2](#functions-2)
|
* [Functions 2](#functions-2)
|
||||||
* [Pure functions by default](#pure-functions-by-default)
|
* [Pure functions by default](#pure-functions-by-default)
|
||||||
* [Mutable arguments](#mutable-arguments)
|
* [Mutable arguments](#mutable-arguments)
|
||||||
|
@ -1587,6 +1588,45 @@ In this example, the `can_register` method has a receiver of type `User` named `
|
||||||
The convention is not to use receiver names like `self` or `this`,
|
The convention is not to use receiver names like `self` or `this`,
|
||||||
but a short, preferably one letter long, name.
|
but a short, preferably one letter long, name.
|
||||||
|
|
||||||
|
## Unions
|
||||||
|
|
||||||
|
Just like structs, unions support embedding.
|
||||||
|
|
||||||
|
```v
|
||||||
|
struct Rgba32_Component {
|
||||||
|
r byte
|
||||||
|
g byte
|
||||||
|
b byte
|
||||||
|
a byte
|
||||||
|
}
|
||||||
|
|
||||||
|
union Rgba32 {
|
||||||
|
Rgba32_Component
|
||||||
|
value u32
|
||||||
|
}
|
||||||
|
|
||||||
|
clr1 := Rgba32{
|
||||||
|
value: 0x008811FF
|
||||||
|
}
|
||||||
|
|
||||||
|
clr2 := Rgba32{
|
||||||
|
Rgba32_Component: {
|
||||||
|
a: 128
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sz := sizeof(Rgba32)
|
||||||
|
unsafe {
|
||||||
|
println('Size: ${sz}B,clr1.b: $clr1.b,clr2.b: $clr2.b')
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Output: `Size: 4B, clr1.b: 136, clr2.b: 0`
|
||||||
|
|
||||||
|
Union member access must be performed in an `unsafe` block.
|
||||||
|
|
||||||
|
Note that the embedded struct arguments are not necessarily stored in the order listed.
|
||||||
|
|
||||||
## Functions 2
|
## Functions 2
|
||||||
|
|
||||||
### Pure functions by default
|
### Pure functions by default
|
||||||
|
|
Loading…
Reference in New Issue