Lua中不同类型的变量令人困惑

问题描述 投票:0回答:1

不是“ Parameter”或“ Argument”,而是“ variable function”和“ variable arguments”,“ variables of arguments”。我感到困惑,并想知道这些是什么。

我在Lua First Edition 5.1的Programming中找到它

解压缩的一个重要用途是在通用调用机制中。通用调用机制允许您动态调用具有任何参数的任何函数。例如,在ANSI C中,无法执行此操作。您可以声明一个函数,该函数接收可变数量的参数(使用stdarg.h),并且可以使用指向函数的指针来调用变量函数。但是,不能使用可变数量的参数来调用函数:用C编写的每个调用都具有固定数量的参数,并且每个参数都具有固定的类型。在Lua中,如果要在数组a中使用变量参数调用变量函数f,则只需编写

lua
1个回答
2
投票

该段写得很草率,解释为“参数”和“参数”,并使用定制术语“变量函数”来表示我想成为的“ variadic function”,这实际上是C的含义。

无论如何,我认为本段要传达的要点如下。

C具有可变函数:可以采用可变数量参数的函数。这意味着您可以使用任意数量的参数来调用它们,然后函数将根据需要对其进行处理。但是,提供给函数的参数序列始终在调用位置进行硬编码。您不能构建值的运行时列表,也不能将每个值作为多个不同的参数传递给可变参数函数,这样该函数会将列表中的每个值视为一个单独的参数。至少,如果不对呼叫站点的列表长度进行硬编码,就无法执行此操作。

在Lua中,您可以执行以下操作:获取“任意”长度的列表(参数确实具有最大限制),然后调用函数,以使该函数将列表中的每个值视为一个不同的参数。无论列表中的值有多少,f(unpack(list))都会将每个值作为单独的参数传递给f

© www.soinside.com 2019 - 2024. All rights reserved.