variadic-functions - 如何在 Zig 中初始化可变参数函数参数?

标签 variadic-functions zig

在 Zig 函数中使用和初始化可变参数的正确方法是什么?

fn variadicFunc(val: u8, variadicArg: ...u8) {
  for (variadicArg) |arg| {
    // ... work on the arg
    _ = arg;
  }
}

最佳答案

回答我自己的问题,感谢 Zig Discord 的 Aiz 和 Hanna:

在 Zig 中编写 variadicFunction 的最基本方法是使用 anytype 和匿名结构:

fn variadicFunc(variadicArg: anytype) {
  for (std.meta.fields(@TypeOf(items)) |field| {
    const value = @field(items, field.name); 
   // work with the value
  }
}

variadicFunc(.{"Hello", 12, .{ Hello } });

但是要小心。这将造成二进制膨胀。尽可能使用数组或切片。

关于variadic-functions - 如何在 Zig 中初始化可变参数函数参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72122366/

相关文章:

c - 如何判断一个可选参数是否传递给函数 C

c++ - 在可变参数模板中实现 STL 函数

swift - 在 Swift 中将数组传递给具有可变数量参数的函数

arraylist - 在 Zig 中改变数组列表中的值

zig - 仅在特定程序中将转换后的 u8(来自 i8)追加到 ArrayList 时出错

posix - 如何在 Zig 中分配不完整类型的结构?

c# - 将数组解包到方法参数中

memory - Zig Lang 中正确的 BigInt Fibonacci 实现

java - Java 泛型的统一参数传递和类型安全