v2 / vlib / v / gen / js / tests / option.v
33 lines · 28 sloc · 499 bytes · f8693adfa249b75fd9201edacd801b1f0cedd4db
Raw
1module main
2
3fn main() {
4 try_propagation() or { println('captured: ${err}') }
5}
6
7fn try_propagation() ! {
8 try_numbers()!
9}
10
11fn try_numbers() ! {
12 for x in 1 .. 10 {
13 y := error_if_even(x) or { x + 1 }
14 println('${x} rounded to ${y}')
15 error_if_prime(y)!
16 }
17}
18
19fn error_if_even(num int) !int {
20 if num % 2 == 0 {
21 return error('number is even')
22 }
23 return num
24}
25
26fn error_if_prime(num int) !int {
27 for i in 2 .. num {
28 if num % i == 0 {
29 return error('${num} is prime')
30 }
31 }
32 return num
33}
34