Lua ipairs没有从表中获取数据

时间:2017-07-13 18:22:03

标签: lua

我是Lua的新手。尝试一些教程。我的理解是,在Lua中,一个表是一个键值存储,任何允许的LUA类型都是除了nil以外的键。 ipairs是一种迭代表的方法,直到ipairs达到零键。

我按照上述理解尝试了以下内容。但第二个ipairs循环不打印任何东西。 下面的代码段打印键和值。

   a ={}
  for i=1,1000 do
    a[i]=i
  end

  for i,data in ipairs(a)
  do
    print("key is:" .. i)
    print("value is " .. data)
    print("\n")
  end

这个不打印任何东西

b={}
  b["a"]="a"
  b["name"]="test"
  b[10] ="b10"
  b["@"]="@@"

  for i,data in ipairs(b)
  do
    print("key is :" .. i)
    print("data is :" .. data)
    print("\n")
  end

任何想法都是错的?

我正在尝试的完整代码。

function work_with_table()
  a = {}
  for i=1,1000 do
    a[i]=i
  end

  for i,data in ipairs(a)
  do
    print("key is:" .. i)
    print("value is " .. data)
    print("\n")
  end

  b={}
  b["a"]="a"
  b["name"]="test"
  b[10] ="b10"
  b["@"]="@@"

  for i,data in ipairs(b)
  do
    print("key is :" .. i)
    print("data is :" .. data)
    print("\n")
  end

end

work_with_table()

编辑1:

我相信这个区块创造了一对? (" a",t [" a"])("名称",t ["名称"])

b={}
  b["a"]="a"
  b["name"]="test"
  b[10] ="b10"
  b["@"]="@@"

编辑2:

当表的索引是基于整数时使用ipair。否则使用对通用键,值循环。谢谢大家的帮助...

1 个答案:

答案 0 :(得分:3)

ipairs 迭代对(1,t [1])`,(2,t [2]),...,直到第一个零值。