Lua的ipairs无法从表中获取数据

我是Lua的新手,正在尝试一些教程。我的理解是,在Lua中,表是一个键值存储,除了nil之外的任何合法LUA类型都可以作为键。ipairs是一种迭代表的方式,直到ipairs遇到一个nil键为止。

我尝试了上面的理解,但第二个ipairs循环没有打印任何东西。下面的片段打印键和值。

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

  for i,data in ipairs(a)
  do
    print("键是:" .. i)
    print("值是:" .. data)
    print("\n")
  end

这个就没有打印任何东西

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

  for i,data in ipairs(b)
  do
    print("键是:" .. i)
    print("数据是:" .. 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("键是:" .. i)
    print("值是:" .. data)
    print("\n")
  end

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

  for i,data in ipairs(b)
  do
    print("键是:" .. i)
    print("数据是:" .. data)
    print("\n")
  end

end

work_with_table()

编辑1:

我相信这个块创建了一个对吗?("a",t["a"]) ("name", t["name"])

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

编辑2:

当表的索引基于整数时,使用ipairs。否则,对于一般的键值循环,请使用pairs。感谢大家的帮助...

点赞
用户107090
用户107090

[ipairs](https://www.lua.org/manual/5.3/manual.html#pdf-ipairs)函数迭代器遍历表中的键值对(1,t[1])、(2,t[2]),直到第一个nil值。

2017-07-13 18:42:26