【问题标题】:Lua ipairs not getting data from tableLua ipairs没有从表中获取数据
【发布时间】:2017-12-18 16:34:46
【问题描述】:

我是 Lua 的新手。尝试一些教程。我的理解是,在 Lua 中,表是一个键值存储,具有任何允许的 LUA 类型作为除 nil 之外的键。 ipairs 是一种遍历表直到 ipairs 命中 nil 键的方法。

我根据上述理解尝试了以下内容。但是第二个 ipairs 循环没有打印任何内容。 下面的 sn-p 打印键和值。

   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"]) ("name", t["name"])

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

编辑 2:

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

【问题讨论】:

标签: lua


【解决方案1】:

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

【讨论】:

  • 我相信这个块会创建一对? ("a",t["a"]) ("name", t["name"]) b={} b["a"]="a" b["name"]="test" b[ 10] ="b10" b["@"]="@@"
  • @GAK 再次阅读 lhf 的答案——他说的是密钥是从 1 开始的数字的对,而不是你的例子中的任何随机字符串。为此,您需要pairs。顺便说一句,pairs 输出没有以任何方式排序。
猜你喜欢
  • 2015-02-24
  • 2014-02-09
  • 2021-06-12
  • 2019-04-25
  • 2015-05-21
  • 1970-01-01
  • 1970-01-01
  • 2015-04-11
  • 2018-07-23
相关资源
最近更新 更多