Lua 文档中 f(x) 的定义

在尝试完全理解解决方案Lua-生成数字序列时, Programming in Lua 的 4.3.4.节不清楚:

for i=1,f(x) do print(i) end
for i=10,1,-1 do print(i) end

循环有一些微妙之处,您应该学习以便有效地使用它。 首先,在循环开始之前,将评估所有三个表达式。例如,在第一个示例中,仅调用 f(x) 一次。其次,控制变量是由 for 语句自动声明的局部变量,仅在循环内可见。[...]

代码的第一行当然不起作用。

f(x)是什么? 它在哪里定义?

不幸的是,文档不是作为单个页面提供的,因此搜索第一个出现的页面需要大量精力。 搜索“lua f(x)”也没有什么用。

说明:现在收到答案后,我意识到问题是一个误解。我错误地解释为“f(x)仅被调用一次”,也就是“包含 f(x) 的行 - for i = 1,f(x) do print(i) end - 仅返回一个值”并没有充分注意“ ** 在循环开始之前,将评估所有三个表达式 **”。

点赞
用户1379631
用户1379631

f(x) 是一个函数,它接受参数 x 并返回一个作为循环的上限的值。

例如,如果函数 f(x) 计算 x² 并以 f(3) 的形式调用它,它将返回值 9。生成的 for 循环将如下所示:

for i=1, f(3) do print(i) end

这与以下代码完全相同:

for i=1, 9 do print(i) end
2016-09-28 21:13:39
用户188159
用户188159

这句话澄清了这一点:表达式在循环开始之前只计算一次

因此,仅调用f(x)一次仅说明在循环中对表达式进行更改不会对其产生影响。

例如,以下代码(表达式为第二行的i=1x):

x = 5
for i = 1, x do
  x = x - 1
  print(i, x)
end
print(x)

将产生以下输出:

1   4
2   3
3   2
4   1
5   0
0

不会产生以下输出:

1   4
2   3
3   2
2
2016-09-28 21:48:08