Lua-对于循环:保存控制变量的值

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

我很难理解doc(https://www.lua.org/pil/4.3.4.html)中的示例,需要澄清一下:

If you need the value of the control variable after the loop (usually when you break the loop), 
you must save this value into another variable:
            -- find a value in a list
            local found = nil
            for i=1,a.n do
              if a[i] == value then
                found = i      -- save value of `i'
                break
              end
            end
            print(found)

我不理解“ a.n”和“如果a [i] ==值”部分。他们是在创建表a = {n = 5,...}并调用单个值(例如a.n = 5)吗?我想我需要对示例中发生的事情,缺少的内容或完整的示例进行书面说明。我猜它缺少表/变量的声明...?原因a [i]正在调用a = {}的条目,但我不明白什么是“值” ...?我必须先声明一个变量,然后将其设置为特定值...?什么值呢?当我将a.n定义为要处理的条目时,为什么还要调用表中的其他条目(即a [i])?在这种情况下,我是否必须通过预定义数字来定义要让控制变量中断的条目,那就是将值设置为...吗?如果已经定义了控制变量的值,那将无法调用控制变量的值。我很困惑就像我理解的例子是否是:

local found = nil
local a=7
for i=1,a do
  print(i)
  found=a
  break
end

但是,当您打印(找到)它的= 7而不是不完整的for循环的最后一次迭代(2或1?)。我正在寻找的是一种在循环中断时保存控制变量处于打开状态的数字的方法。因此,如果它是“对于i = 1,5,则...”,而最后一次打印的迭代是4,我怎么称这个值?我不确定文档是否在其示例中提供了此功能。

lua
1个回答
0
投票

完整的工作示例可能如下:

local function find_value_in_list(value, a)
    -- find a value in a list and print its index
    local found = nil
    for i=1, a.n do
      if a[i] == value then
        found = i      -- save value of `i'
        break
      end
    end
    print(found)
end    

find_value_in_list(33, {n=4, 11, 22, 33, 44})  --> 3
find_value_in_list(42, {n=4, 11, 22, 33, 44})  --> nil
© www.soinside.com 2019 - 2024. All rights reserved.