Zig 让运行虚拟函数变得非常困难。这一点一开始非常令人恼火。 你不能像在 Golang 或大多数其他语言中那样简单地创建一个接口,然后轻松实现它。 但这其实是一个特性,而不是一个缺陷。你可以使用 comptime 来实现虚拟函数。但 Zig 让你更明显地看到这样做的负面权衡。 Zig 使得编写不使用虚拟函数的简单代码成为你的默认快乐路径,因此你最终只在这样做极具影响力且值得付出努力时才会使用接口和虚拟函数。 结果是,在很多代码中,你几乎从不需要接口。
我忘了提到我同意,顺便说一下。这更像是一个银色的衬托,让它从“什么鬼”变成了“实际上这是一个有趣的心态,可以抑制这种抽象” 有点像 Go 中缺少枚举或 Rust 中的借用检查器。或者面向对象语言。我总体上不喜欢这些东西,但我在采用语言视角时学到了一些东西。
@norswap 顺便说一下,我意识到我的帖子没有提到我总体上想要接口。 我这里只是在谈论积极的一面,但在我看来,接口是 zig 没有隐藏控制流的地方,走得太远了一步。
789