欢迎光临散文网 会员登陆 & 注册

为zig实现接口的亿些坑(四)

2023-02-24 14:36 作者:pathologyenigma  | 我要投稿

书接上文,我希望可以得到一种更加方便的调用接口函数的办法,即xxx.{method_name}({type_params})({method_params})这种形式,那么就需要实现接口的部分更加的复杂,上一期之所以戛然而止,主要原因还是此时的实现的难度很高

那么我们希望的情况是怎样呢:

这样的方式就相对来说比较舒适了

实现部分我们也不能搞的太复杂,目前的想法是这样的:

此时我们有一个专门为了实现接口而设计的manager类型(本质上是一个builder),最后会将实现的接口对应的caller放入被实现的对象

于是,我们不难想到这样的实现方式:

但是,在编译的时候就碰到了一个奇怪的问题

提示没有这个成员函数?怎么回事

那我们去掉套在外面的那一层struct,只留下函数呢?

一个个来看,首先是map的问题,编译期默认所有变量的引用都是*const的,要么就去除const,要么就需要clone一下,然而zig目前版本并不支持编译期开内存,所有注定是失败的,比如当我改成下面这样:

无法确定地址了,看来要么只能使用栈上面的解决方案,要么就只能等zig实现编译期的allocator了

在zig拥有更牛逼的编译期能力之前,我们可能暂时只能这样了

为zig实现接口的亿些坑(四)的评论 (共 条)

分享到微博请遵守国家法律