struct Foo { mut: bar ?int = 1 baz ?int = none } fn get_foo() ?Foo { return Foo{} } fn main() { // `default value` test mut f := Foo{} println(f.bar?) dump(f.bar?) // `init` test f = Foo{ bar: 2 baz: none } println(f.bar?) dump(f.bar?) // `assign` test f.bar = 3 println(f.bar?) dump(f.bar?) // `or block` test a := f.bar or { 123 } println(a) dump(a) b := f.baz or { 9999 } println(b) dump(b) // `infix expr` test mut sum := f.bar? + 1 println(sum) dump(sum) sum = f.bar or { 123 } + 1 println(sum) dump(sum) // `if guard` test if c := f.bar { println(c) } else { println(err) } if c := f.baz { println(c) } else { println(err) } // `match` test match f.bar? { f.bar? { println(f.bar?) } else {} } // others test println(f) dump(f) println(get_foo()?.bar?) }