Settings

Theme

Comparing reflection capabilities of C++, Zig and C3

nyr24.github.io

11 points by ManuLinares · 8 comments

Reader

3 threads
peesem

"not an expert in zig" but you can't even look at the documentation to find the `@tagName` builtin to do exactly the problem posed?: https://ziglang.org/documentation/0.16.0/#tagName

i can literally google "zig enum to string" and the first result is a reddit post where the given solution is `@tagName`. i'm ready to write this post off as a low-effort ad for C3

  • lerno

    C3 has an even simpler way than Zig: `Color.RED.description`.

    From what I can see the example started from C++, and then comparing how each language would look building it in userland instead.

  • hiccuphippo

    If it's for debugging purposes, you can use `{any}` as the format and it will print `.BLUE`

      std.debug.print("{any}\n", .{color});
  • jb1991

    Agree, the post was extremely low effort.

RyanVail

Zig doesn't have attributes, but you could just create a thin wrapper struct over an inner type and use setter functions that throw errors on invalid values. Personally I prefer this over attributes because it forces you to handle possible error states from the callers of the setters, instead of relying on you remembering to call `validate` on your types.

  • lerno

    I believe all examples are derived from C++ examples on its new reflection capabilities.

WalterBright

There's a large black zig-zag blocking reading the text.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection