Ziglang 0.10.0 interfaces
unknown
plain_text
3 years ago
662 B
14
Indexable
const std = @import("std");
const Cat = struct {
anger_level: usize,
pub fn talk(self: Cat) void {
std.debug.print("Cat: meow! (anger lvl {})", .{self.anger_level});
}
};
const Dog = struct {
name: []const u8,
pub fn talk(self: Dog) void {
std.debug.print("{s} the dog: bark!", .{self.name});
}
};
const Animal = union(enum) {
cat: Cat,
dog: Dog,
pub fn talk(self: Animal) void {
switch (self) {
inline else => |case| case.talk(),
}
}
};
pub fn main() !void {
var animal = Animal{ .dog = .{ .name = "Spotty" } };
animal.talk();
}
Editor is loading...