0Pricing
Zig Academy · 课时

匿名结构体与元组

创建临时的分组值。

匿名结构体与元组 是 CoddyKit 上的免费 Zig Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Zig Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Zig Academy 课程共包含 4 节课。

本课时的部分内容尚未翻译,以英文显示。

Sometimes You Need It Once

Not every grouping deserves a named type. Zig lets you write an anonymous struct inline, right where you use it.

Just Drop the Name

An anonymous struct literal starts with .{ and lists fields by name, with no type written before it.

const p = .{ .x = 1, .y = 2 };

Use the Fields Normally

You read fields the same way as a named struct, with a dot. Here p.x is 1 and p.y is 2.

const sum = p.x + p.y;

Coerce to a Named Type

An anonymous literal can coerce into a named struct when the target type is known, like a return value.

fn make() Point {
    return .{ .x = 0, .y = 0 };
}

Tuples Have No Field Names

Leave out the field names and you get a tuple: an anonymous struct whose fields are accessed by position.

const pair = .{ 1, 2 };

Index a Tuple

Reach a tuple field by number, written like a field name. So pair[0] is 1 and pair[1] is 2.

const first = pair[0];

Mixed Types Are Fine

Tuple fields can each be a different type. One literal can hold an int, a bool, and a string at once.

const row = .{ 42, true, "hi" };

Tuples Have a Length

A tuple is still a struct, so it has a compile-time len you can read with tuple.len.

const n = row.len; // 3

Great for print Arguments

std.debug.print takes a tuple of values to format. That .{} you pass is an anonymous tuple.

std.debug.print("{} {}\n", .{ 1, 2 });

Loop Over a Tuple

Because the length is known at compile time, you can walk a tuple's fields with an inline for loop.

inline for (row) |field| {
    _ = field;
}

Named or Positional

Reach for an anonymous struct when names add clarity, and a tuple when a short, ordered group is all you need.

Quick Check

What is the difference between a tuple and a named anonymous struct?

Recap

You met anonymous structs and tuples: .{ .x = 1 } is inline and named, while .{ 1, 2 } is a positional tuple. 📦

常见问题解答

「匿名结构体与元组」课时是免费的吗?

是的 — 「匿名结构体与元组」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Zig Academy 课程的其余内容,请升级到 CoddyKit PRO。 Zig Academy 课程共包含 4 节课。

「匿名结构体与元组」这节课中我会学到什么?

创建临时的分组值。 你通过在浏览器中直接运行的动手代码来练习 Zig Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Zig Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Zig Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「匿名结构体与元组」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Zig Academy 课中编写并运行代码吗?

能。每节 Zig Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 声明结构体与字段
  2. 方法与 self 参数
  3. 字段默认值
  4. 匿名结构体与元组
← 返回 Zig Academy