v2 / vlib / v / slow_tests / inout / struct_field_option.vv
63 lines · 61 sloc · 827 bytes · 6a32c810703f4ec0c39fe18298ebe6c40acac8f1
Raw
1struct Foo {
2mut:
3 bar ?int = 1
4 baz ?int = none
5}
6
7fn get_foo() ?Foo {
8 return Foo{}
9}
10
11fn main() {
12 // `default value` test
13 mut f := Foo{}
14 println(f.bar?)
15 dump(f.bar?)
16 // `init` test
17 f = Foo{
18 bar: 2
19 baz: none
20 }
21 println(f.bar?)
22 dump(f.bar?)
23 // `assign` test
24 f.bar = 3
25 println(f.bar?)
26 dump(f.bar?)
27 // `or block` test
28 a := f.bar or { 123 }
29 println(a)
30 dump(a)
31 b := f.baz or { 9999 }
32 println(b)
33 dump(b)
34 // `infix expr` test
35 mut sum := f.bar? + 1
36 println(sum)
37 dump(sum)
38 sum = f.bar or { 123 } + 1
39 println(sum)
40 dump(sum)
41 // `if guard` test
42 if c := f.bar {
43 println(c)
44 } else {
45 println(err)
46 }
47 if c := f.baz {
48 println(c)
49 } else {
50 println(err)
51 }
52 // `match` test
53 match f.bar? {
54 f.bar? {
55 println(f.bar?)
56 }
57 else {}
58 }
59 // others test
60 println(f)
61 dump(f)
62 println(get_foo()?.bar?)
63}
64