| why do you pass an empty struct ``` std.debug.print("hello world!\n", .{});
```that kind of extra typing is what turn me off to be very honest, other than that, zig seems like C and Swift had a baby, pretty nice another thing: ``` const LikeAnObject = struct{ value: i32,
fn print(self: *LikeAnObject) void {
std.debug.print("value: {}\n", .{self.value});
}
};``` Why don't make the self: *LikeAnObject implicit? Again, this focus on extra typing only just add noise in my opinion, function is already wrapped inside the struct, i feel like it HAS to be implicit --
EDIT
-- One last thing: ``` for (array) | value | {
std.debug.print("array {}\n", .{value});
}
```Not a fan of the | | syntax, it doesn't feel natural ``` for (value in array)
```Here it is pretty clear what it does --
EDIT 2
-- ``` const std = @import("std"); std.debug.print("hello\n", .{}); ``` is import the right word here? feels like it should be ``use`` since you'll use them this way: ``std.debug.print`` ``import`` would be to make all the types directly visible and use this way: ``debug.print`` |
The || syntax is used elsewhere in zig, if statements, catch, switch, etc.
There's no requirement for a function inside a struct to act on the contents of structs, so it's reasonable to use structs as namespaces. This is what is happening when you @import, for example. The imported file becomes a struct.
This is quite different from a lot of other PLs, but it is pleasantly consistent when you get used to it.
There is a usingnamespace keyword to make a structs public contents spill out into the current scope. It's to be used sparingly.
Edit: I'm wrong! It's an anonymous struct with number fields, not an anonymous array.