标签: lua-table

Lua新手 - 表操作

谁可以给我解释一下这个?我已经通过本教程想出了这个被称为表格.来自C/C++背景,有人可以解释这是如何工作的(我试图理解一些现有的Lua代码)?

config = {
  devices = {
    C56    = "/dev/ttyS2",
    ELTRA  = "/dev/ttyS3",
--  MICORE = "/dev/ttyS4",
    HID    = "/dev/ttyS1",

    KEYCARD = {
  --  [6] = { tty="/dev/ttyS1", speed=9600 },
      [7] = { tty="/dev/ttyS4", speed=9600 },
    },

  },
}
Run Code Online (Sandbox Code Playgroud)

它是一个配置表,由一个设备表组成,但是有一个KEYCARD表吗?什么是Lua中的C56和ELTRA?他们是田地吗?

lua lua-table

2
推荐指数
1
解决办法
524
查看次数

错误:main.lua:22:尝试索引字段'?' (零值)

我试图在多维表中得到一些0和1,但我无法让它工作.我搜索了很多帖子,但我找不到解决方法.这是代码:

    generatedTerrain={
{0,0,0,0,0},
{0,0,0,0,0}
}
x=0
y=0

    function mapGen()
        for y=1,67 do
            generatedTerrain[y]={}
            for x=1,89 do
                generatedTerrain[x][y] = math.random(0,1) --This doesn't work
            end
        end
    end
mapGen()
end
Run Code Online (Sandbox Code Playgroud)

arrays lua lua-table

2
推荐指数
1
解决办法
997
查看次数

table.insert 覆盖现有索引

答案:仅在序列(数组/列表)(仅具有从 1 开始的连续整数键的表)上使用 table.* 函数。它们的行为在非类似数组的表上是未定义的:它们可能会也可能不会像您预期的那样工作。


在 Lua 5.1 table.insert( t, index, value ) 应该向上移动值,如果索引已经存在于表中,对吗?

但它并不总是这样做:

local t = {}
table.insert( t, 4, 5 )
table.insert( t, 5, 6 )
table.insert( t, 4, 4 ) -- this erase the value 5 at key 4
-- t[4] = 4, t[5] = 6, t[6] = nil

local t = {}
table.insert( t, 1 )
table.insert( t, 2 )
table.insert( t, 3 )

table.insert( t, 6, 7 )
table.insert( t, 6, 6 ) -- …
Run Code Online (Sandbox Code Playgroud)

lua lua-table

2
推荐指数
1
解决办法
1398
查看次数

Lua中的三维表

我需要最好的方法来存储像素的三维表。我需要做的是有多个 x,y 表(基本上是 3 维)它是光栅化多个具有透明度的二维像素图。你看我可以像这样轻松地创建两个维度:

pixels = {{},{}}
pixels[1][5] = "green" --just an example
print(pixels[1][5])
Run Code Online (Sandbox Code Playgroud)

但是,我不能像在 Java 中那样做到这一点......

pixels = {{}, {}, {}}
pixels[1][4][3] = "red" -- [x][y][z]
print(pixels[1][4][3])
Run Code Online (Sandbox Code Playgroud)

这是我想要的功能,但我通过这样做令人作呕地解决了这个问题......

pixels = {}
pixels["x23,y02,z05"] = "green"
print(pixels["x23,y02,z05"]")
Run Code Online (Sandbox Code Playgroud)

我只是使用 string.sub 和 string.concat 来读取和设置表格...我真的希望示例 2 的功能能够工作,但是我知道它可能需要以不同的方式实现。

arrays lua multidimensional-array lua-table

2
推荐指数
1
解决办法
7556
查看次数

在Lua中有一个更简单/更简洁的方法来初始化这个数组吗?

我有以下逻辑:

delete_request = {}
delete_request.value = {}
delete_request.value.username = {}
delete_request.value.username.value = rowvm.userid
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种更简单的方法来初始化具有这种类型结构的数组......或者如果我拥有的是最好的方法.

arrays lua lua-table

2
推荐指数
1
解决办法
47
查看次数

如何从最后一个索引迭代到表中的第一个

bestSword = {
  {name = 'www' , lvl = 35, atk = 38, npcPrice = 15000 , buyPrice = 0},
  {name = 'bbb' , lvl = 40, atk = 40, npcPrice = 20000 , buyPrice = 0},
  {name = 'eee' , lvl = 50, atk = 42, npcPrice = 25000 , buyPrice = 0},
  {name = 'sss' , lvl = 55, atk = 43, npcPrice = 30000 , buyPrice = 0},
  {name = 'aaa' , lvl = 60, atk = …
Run Code Online (Sandbox Code Playgroud)

lua iterator lua-table

2
推荐指数
1
解决办法
1835
查看次数

Lua 表作为 redis 参数

我正在尝试MSETNX从 Lua 脚本调用 redis。如果它们不存在,我需要设置一些带有空值的键。

我试着这样做:

redis.call('MSETNX', KEYS)KEYS{'key1', '', 'key2', ''}传递给脚本。

但这不起作用,因为此调用需要作为参数传递的单个键和值,而不是表。

这有效:

redis.call('MSETNX', 'key1', '', 'key2', '')

但是 KEYS 变量是动态的,所以我不能那样做。

如何MSETNX在不必单独明确列出每个键的情况下调用?

- 编辑 -

是否可以unpack“混合”值?

我可以通过KEYS = {'key1', 'key2'}unpack它:'key1', '', 'key2', ''?谢谢!

lua redis lua-table

2
推荐指数
1
解决办法
947
查看次数

Lua添加两个表

x = {1, 2, 3}
y = {4, 5, 6}
z = x + y
Run Code Online (Sandbox Code Playgroud)

我有两个表xy并且只想创建第三个表,它只是其中两个的元素(未排序)。我努力使用了上面的代码,但这给出了错误input:3: attempt to perform arithmetic on a table value (global 'x')......

lua lua-table

2
推荐指数
1
解决办法
4002
查看次数

Lua 打印表格

我在 Lua 中有一个脚本,我需要打印变量 res,但我不知道如何打印。我在另一个函数中得到函数的结果,我想在那里打印

function parseCSVLine(line) 
  local res = {}
  local pos = 1
  local sep = ','
  while true do 
     local c = string.sub(line,pos,pos)
     if (c == "") then break end
     if (c == '"') then
        -- quoted value (ignore separator within)
        local txt = ""
        repeat
           local startp,endp = string.find(line,'^%b""',pos) -- Digitos
           txt = txt..string.sub(line,startp+1,endp-1)
           pos = endp + 1
           c = string.sub(line,pos,pos) 
           if (c == '"') then txt = txt..'"' end 
           -- check first char AFTER quoted …
Run Code Online (Sandbox Code Playgroud)

printing lua lua-table

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

将变量分配给表

我正在尝试将变量分配给表,如下所示:

b = {x = 3, y = 4}

a = b
-- Reassigning by value?
a.x = 10
print(b.x,b.y)
--OUTPUT: 10 4
Run Code Online (Sandbox Code Playgroud)

但是,我所期望的是bx根本不应该改变,因为我只改变了ax的值,所以我觉得我不太明白这个例子中的"a = b"实际上在做什么.

对不起,如果这是一个基本问题,任何帮助表示赞赏!

lua lua-table

2
推荐指数
1
解决办法
47
查看次数