Class
所有 Class 都自动拥有如下的 API
注意
new
zig
pub fn new(ally: std.mem.Allocator) !*Self
功能:堆上创建一个对象
参数:
ally
: 内存分配器
返回:如果成功返回创建的对象,否则 std.heap.Allocator.Error
make
zig
pub fn make() Self
功能:栈上创建一个对象
返回:创建的对象
注意
用 make() 创建的对象,一定要调用 initMixin() 后才能正常使用
initMixin
zig
pub fn initMixin(self: *Self) void
功能:初始化 self.mixin
参数:
self
: 目标对象
destroy
zig
pub fn destroy(self: *Self) void
功能:销毁对象
参数:
self
: 目标对象
as
zig
pub fn as(self: *const Self, comptime T: type) t: {
break :t if (isInterface(T)) ?T else ?*T;
}
注意
这个转换需要进行一次数组搜索操作,是有开销的
cast
zig
pub fn cast(self: *const Self, comptime T: type) t: {
break :t if (isInterface(T)) T else *T;
}
注意
这个转换基本没有开销,最多只有一次指针加法
asptr
zig
pub fn asptr(self: *const Self) *anyopaque