如何在循环结束时保留 for 循环变量的值?
How do I retain the value of a for loop variable when the loop is over?
我试图在 Lua 中循环查找某些内容,完成后我需要使用找到的位置。
for j = 1,100 do
<do some stuff>
if <some test> then
break
end
end
if j >= 100 then
return
end
不幸的是,我得到一个错误,提示在 for
循环退出后,j
的值为 nil。我如何使用 j 结束的值?显然我可以创建一个额外的变量并在我中断之前分配它,但这似乎是错误的,而且我从未见过另一种语言在循环结束时将循环变量设置为 nil,所以我想知道是否没有一个更好的方法来完成这个。
循环变量仅在 for 循环块内可见。您可以按照 PIL 4.3.4 Numeric For.
中的建议创建另一个变量来解决这个问题
local index
for j=1,100 do
if j == 10 then
index = j
end
end
或者,如果您正在执行常见操作,那么最好使用具有早期 return 的函数。
function find(tbl, val)
for i, v in ipairs(tbl) do
if v == val then
return i
end
end
end
我试图在 Lua 中循环查找某些内容,完成后我需要使用找到的位置。
for j = 1,100 do
<do some stuff>
if <some test> then
break
end
end
if j >= 100 then
return
end
不幸的是,我得到一个错误,提示在 for
循环退出后,j
的值为 nil。我如何使用 j 结束的值?显然我可以创建一个额外的变量并在我中断之前分配它,但这似乎是错误的,而且我从未见过另一种语言在循环结束时将循环变量设置为 nil,所以我想知道是否没有一个更好的方法来完成这个。
循环变量仅在 for 循环块内可见。您可以按照 PIL 4.3.4 Numeric For.
中的建议创建另一个变量来解决这个问题 local index
for j=1,100 do
if j == 10 then
index = j
end
end
或者,如果您正在执行常见操作,那么最好使用具有早期 return 的函数。
function find(tbl, val)
for i, v in ipairs(tbl) do
if v == val then
return i
end
end
end