▲ | 0-R-1-0-N 2 days ago | ||||||||||||||||
Reader and writers were interfaces before 0.15.1. What’s new is that they are buffered. I don’t think that zig discourages interfaces, just that the language doesn’t hide anything. An interface in all system languages is a struct with a vtable just like in zig but that they have an easy way of creating one. If you need one in zig you can go that approach or use a tagged union just that zig is open about what an interface is. | |||||||||||||||||
▲ | bbatha a day ago | parent | next [-] | ||||||||||||||||
> f you need one in zig you can go that approach or use a tagged union just that zig is open about what an interface is. Perl objects worked like this and the ecosystem is a mess as a result. There's a built in `bless` to add a vtable. There's some cool stuff you can do with that like blessing arrays to do array of structs vs struct of arrays and making it look like a regular object in user code. The problem is there are like 4 popular object libraries that provide base stuff like inheritance, meta objects, getters/setters etc and they're not all compatible and they have subtle tradeoffs that get magnified when you have to pull multiple in to get serious work done. | |||||||||||||||||
▲ | scuff3d 2 days ago | parent | prev [-] | ||||||||||||||||
Yes I know. I see the same statement every single time this conversation comes. Let me ask this: hypothetically if they wanted to, would it be possible for Zig to add a language feature called Interface which provided to the user "...an easy way of creating one". | |||||||||||||||||
|