以 zig(zig 语言)生成类型
Generation of types in zig (zig language)
是否可以在 zig 中创建一个 comptime
函数来生成新的结构类型?该函数将接收一个字符串数组和一个类型数组。字符串是后续结构字段的名称。
部分。 https://github.com/ziglang/zig/issues/383
早就提出了这个建议
您只能使用 fields
,而不是自定义 decls
。
现在已经实施为 https://github.com/ziglang/zig/pull/6099
const builtin = @import("std").builtin;
const A = @Type(.{
.Struct = .{
.layout = .Auto,
.fields = &[_]builtin.TypeInfo.StructField{
.{ .name = "one", .field_type = i32, .default_value = null, .is_comptime = false, .alignment = 0 },
},
.decls = &[_]builtin.TypeInfo.Declaration{},
.is_tuple = false,
},
});
test "" {
const a: A = .{ .one = 25 };
}
TypeInfo 结构已定义 here。
是否可以在 zig 中创建一个 comptime
函数来生成新的结构类型?该函数将接收一个字符串数组和一个类型数组。字符串是后续结构字段的名称。
部分。 https://github.com/ziglang/zig/issues/383
早就提出了这个建议您只能使用 fields
,而不是自定义 decls
。
现在已经实施为 https://github.com/ziglang/zig/pull/6099
const builtin = @import("std").builtin;
const A = @Type(.{
.Struct = .{
.layout = .Auto,
.fields = &[_]builtin.TypeInfo.StructField{
.{ .name = "one", .field_type = i32, .default_value = null, .is_comptime = false, .alignment = 0 },
},
.decls = &[_]builtin.TypeInfo.Declaration{},
.is_tuple = false,
},
});
test "" {
const a: A = .{ .one = 25 };
}
TypeInfo 结构已定义 here。