aboutsummaryrefslogtreecommitdiff
path: root/exercises/026_hello2.zig
diff options
context:
space:
mode:
Diffstat (limited to 'exercises/026_hello2.zig')
-rw-r--r--exercises/026_hello2.zig23
1 files changed, 23 insertions, 0 deletions
diff --git a/exercises/026_hello2.zig b/exercises/026_hello2.zig
new file mode 100644
index 0000000..237d27c
--- /dev/null
+++ b/exercises/026_hello2.zig
@@ -0,0 +1,23 @@
+//
+// Great news! Now we know enough to understand a "real" Hello World
+// program in Zig - one that uses the system Standard Out resource...which
+// can fail!
+//
+const std = @import("std");
+
+// Take note that this main() definition now returns "!void" rather
+// than just "void". Since there's no specific error type, this means
+// that Zig will infer the error type. This is appropriate in the case
+// of main(), but can have consequences elsewhere.
+pub fn main() !void {
+
+ // We get a Writer for Standard Out so we can print() to it.
+ const stdout = std.io.getStdOut().writer();
+
+ // Unlike std.debug.print(), the Standard Out writer can fail
+ // with an error. We don't care _what_ the error is, we want
+ // to be able to pass it up as a return value of main().
+ //
+ // We just learned of a single statement which can accomplish this.
+ stdout.print("Hello world!\n", .{});
+}