v/examples/compiletime/d_compile_value.v

57 lines
1.4 KiB
V
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// This example shows how to use V's compile time defines and values via the -d flag and $d() function.
//
// To change the default values below, pass compile flags to v using: `-d ident=<value>`
// Examples:
// ´´´
// v -d header -d pad=10 -d jobs=8 run d_compile_value.v
// v -d id="Bob" -d pad=2 -d pad_char='$' -d jobs=10 run d_compile_value.v
// ```
const pad = $d('pad', 5)
const pad_char = $d('pad_char', `-`)
const footer = '
Available compile time flags:
-d pad=<i64>
-d pad_char=<character>
-d id="<string>"
-d jobs=<i64>
-d header=<bool>
You can turn this message off with:
-d footer=false'
struct Job {
id string = $d('id', 'Job') // adjust with `-d id="My ID"`
}
struct App {
jobs [$d('jobs', 4)]Job // adjust fixed array size with `-d jobs=6`
}
// println_padded prints `str` to stdout with a padding.
// Padding length and padding character can be adjusted at compile time
// via `-d pad=1` and `-d pad_char=x`.
fn println_padded(str string) {
for _ in 0 .. pad {
print(rune(pad_char))
}
println(' ${str}')
}
fn main() {
header := $d('header', false) // adjust header variable with `-d header=true` or simply `-d header`
if header {
println_padded('Compile Value Example')
}
app := App{}
for i, job in app.jobs {
println_padded('${job.id} ${i + 1}')
}
// Turn the footer message off using `-d footer=false`
if $d('footer', true) {
println(footer)
}
}