标签: lua-table

为什么Lua数组(表)从1开始而不是0?

我不明白Lua这一部分的决定背后的理由.为什么索引从1开始?我读过(和其他人一样)这篇伟大的论文.在我看来,语言的一个奇怪的角落是非常愉快的学习和编程.不要误会我的意思,Lua很棒,但必须在某处做出解释.我发现的大部分内容(在网上)只是说索引从1开始.完全停止.

阅读其设计师对该主题的看法将是非常有趣的.

请注意,我在Lua中"非常"初学者,我希望我不会错过关于表格的明显内容.

arrays lua lua-table

120
推荐指数
6
解决办法
5万
查看次数

确定Lua表是否为空(包含没有条目)的最有效方法?

确定表是否为空(即,当前既不包含数组样式值也不包含dict样式值)的最有效方法是什么?

目前,我正在使用next():

if not next(myTable) then
    -- Table is empty
end
Run Code Online (Sandbox Code Playgroud)

有更有效的方法吗?

注意:#运算符在这里不够用,因为它只对表中的数组样式值进行操作 - 因此#{test=2}无法区分,#{}因为它们都返回0.还要注意检查表变量是否nil足够,因为我不是在寻找nil值,而是具有0个条目的表(即{}).

lua lua-table

114
推荐指数
1
解决办法
6万
查看次数

如何检查表中是否包含Lua中的元素?

有没有检查表是否包含值的方法?我有自己的(幼稚)功能,但我想知道是否存在"正式"的东西?或者更高效的东西......

function table.contains(table, element)
  for _, value in pairs(table) do
    if value == element then
      return true
    end
  end
  return false
end
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我使用这个函数的主要原因是使用表作为集合,即没有重复的元素.还有其他我可以使用的东西吗?

lua contains unique set lua-table

90
推荐指数
2
解决办法
14万
查看次数

如何通过键删除lua表条目?

我有一个lua表,我用作hashmap,即使用字符串键:

local map = { foo = 1, bar = 2 }
Run Code Online (Sandbox Code Playgroud)

我想"弹出"由其键标识的该表的元素.有一种table.remove()方法,但它只需要删除元素的索引(即数字)而不是通用键.我希望能够做到table.remove(map, 'foo'),这就是我实现它的方式:

function table.removekey(table, key)
    local element = table[key]
    table[key] = nil
    return element
end
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法呢?

lua key lua-table

85
推荐指数
2
解决办法
6万
查看次数

Lua - 合并表?

我需要合并两个表,如果给定的项目同时存在,则第二个覆盖内容将包含在第一个表中.我看了,但标准库似乎没有提供这个.我在哪里可以获得这样的功能?

merge lua lua-table

56
推荐指数
6
解决办法
5万
查看次数

如何按值复制Lua表?

最近我写了一些Lua代码,如:

local a = {}
for i = 1, n do
   local copy = a
   -- alter the values in the copy
end
Run Code Online (Sandbox Code Playgroud)

显然,这不是我想要做的,因为变量持有对匿名表的引用而不是Lua中表本身的值.Lua中的编程清楚地阐述了这一点,但我忘了它.

所以问题是我应该写什么而不是copy = a获取值的副本a

lua lua-table

55
推荐指数
6
解决办法
6万
查看次数

如何遍历Lua中的表?

所以,我有一个表格:

arr =
{
  apples = { 'a', "red", 5 },
  oranges = { 'o', "orange", 12 },
  pears = { 'p', "green", 7 }
}
Run Code Online (Sandbox Code Playgroud)

它似乎不可能根据它们的索引访问它们,并且值本身就是表,所以我只是将嵌套表的第一个值作为它的索引,所以它现在看起来像这样:

arr =
{
  apples = { 0, 'a', "red", 5 },
  oranges = { 1, 'o', "orange", 12 },
  pears = { 2, 'p', "green", 7 }
}
Run Code Online (Sandbox Code Playgroud)

所以,现在任何时候我使用其中一个表,我知道索引是什么,但仍然无法使用索引到达表,所以我开始编写一个循环遍历它们的函数,并检查索引直到它找到了合适的人选.然后我意识到......如果我不能通过索引引用它们,我怎么能遍历它们?所以,现在我被卡住了.我真的希望能够在大多数时间输入arr.apples和arr [1],但当然有时需要同时输入两个.

arrays lua loops key lua-table

52
推荐指数
3
解决办法
10万
查看次数

在Lua列表中搜索项目

如果我有这样的项目列表:

local items = { "apple", "orange", "pear", "banana" }
Run Code Online (Sandbox Code Playgroud)

如何检查此列表中是否有"橙色"?

在Python中我可以这样做:

if "orange" in items:
    # do something
Run Code Online (Sandbox Code Playgroud)

Lua中有同等的东西吗?

lua list lua-table

49
推荐指数
3
解决办法
10万
查看次数

lua:检索表中的键列表

我需要知道如何在lua中检索表的键集.例如,如果我有下表:

tab = {}
tab[1]='a'
tab[2]='b'
tab[5]='e'
Run Code Online (Sandbox Code Playgroud)

我想要检索一个如下所示的表:

keyset = {1,2,5}
Run Code Online (Sandbox Code Playgroud)

lua keyset lua-table

33
推荐指数
2
解决办法
5万
查看次数

如何附加到Lua中的表中

我试图找出相当于:

foo = []
foo << "bar"
foo << "baz"
Run Code Online (Sandbox Code Playgroud)

我不想提出递增索引.是否有捷径可寻?

lua lua-table

33
推荐指数
3
解决办法
6万
查看次数

标签 统计

lua ×10

lua-table ×10

arrays ×2

key ×2

contains ×1

keyset ×1

list ×1

loops ×1

merge ×1

set ×1

unique ×1