2 ms·
i have never used zig before, but after reading the article i came to the same conclusion. the "problem" (if it is a problem at all, that is) really is that .{}
by em-bee 2y ago
i have never used zig before, but after reading the article i came to the same conclusion. the "problem" (if it is a problem at all, that is) really is that .{} is the syntax for a struct whose type is to be figured out by the compiler, that new users will be unfamiliar with.
i don't know if there are other uses for . and {} that would make this hard to read. if there are, then maybe that's an issue, but otherwise, i don't see that as a problem. it's something to learn.
ideally, each syntax element has only one obvious use. that's not always possible, but as long as the right meaning can easily be inferred from the context, then that's good enough for most cases.
- samatman 2y agoOne will quickly become accustomed to the .{} pattern learning Zig. It's used for struct constructors: const a_struct: StructType = .{ .foo = "baz"}; As well as union initialization. So .{} is a struct constructor for a struct where every field has a default value, which chooses all of those fields.
- flohofwoe 2y agoI think it becomes clearer when considering that these are all equivalent: const a_struct: StructType = StructType{ .foo = "baz" }; const a_struct = StructType{ .foo = "baz" }; const a_struct: StructType = .{ .foo = "baz" };
- flohofwoe 2y ago> that new users will be unfamiliar with It's really not much different than in nearly any other language with type inference except for the dot (which is just a placeholder for an inferred type name).