2021-01-30 20:00:32 -05:00
|
|
|
//
|
|
|
|
// One way to deal with error unions is to "catch" any error and
|
|
|
|
// replace it with a default value.
|
|
|
|
//
|
|
|
|
// foo = canFail() catch 6;
|
|
|
|
//
|
|
|
|
// If canFail() fails, foo will equal 6.
|
|
|
|
//
|
|
|
|
const std = @import("std");
|
|
|
|
|
2021-02-15 16:55:44 -05:00
|
|
|
const MyNumberError = error{TooSmall};
|
2021-01-30 20:00:32 -05:00
|
|
|
|
|
|
|
pub fn main() void {
|
|
|
|
var a: u32 = addTwenty(44) catch 22;
|
2021-02-15 16:55:44 -05:00
|
|
|
var b: u32 = addTwenty(4) ??? 22;
|
2021-01-30 20:00:32 -05:00
|
|
|
|
2021-04-04 16:23:27 -04:00
|
|
|
std.debug.print("a={}, b={}\n", .{ a, b });
|
2021-01-30 20:00:32 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
// Please provide the return type from this function.
|
|
|
|
// Hint: it'll be an error union.
|
|
|
|
fn addTwenty(n: u32) ??? {
|
|
|
|
if (n < 5) {
|
|
|
|
return MyNumberError.TooSmall;
|
|
|
|
} else {
|
|
|
|
return n + 20;
|
|
|
|
}
|
|
|
|
}
|