谁可以给我解释一下这个?我已经通过本教程想出了这个被称为表格.来自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?他们是田地吗?
我试图在多维表中得到一些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) 答案:仅在序列(数组/列表)(仅具有从 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) 我需要最好的方法来存储像素的三维表。我需要做的是有多个 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 的功能能够工作,但是我知道它可能需要以不同的方式实现。
我有以下逻辑:
delete_request = {}
delete_request.value = {}
delete_request.value.username = {}
delete_request.value.username.value = rowvm.userid
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种更简单的方法来初始化具有这种类型结构的数组......或者如果我拥有的是最好的方法.
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) 我正在尝试MSETNX从 Lua 脚本调用 redis。如果它们不存在,我需要设置一些带有空值的键。
我试着这样做:
redis.call('MSETNX', KEYS)KEYS{'key1', '', 'key2', ''}传递给脚本。
但这不起作用,因为此调用需要作为参数传递的单个键和值,而不是表。
这有效:
redis.call('MSETNX', 'key1', '', 'key2', '')
但是 KEYS 变量是动态的,所以我不能那样做。
如何MSETNX在不必单独明确列出每个键的情况下调用?
- 编辑 -
是否可以unpack“混合”值?
我可以通过KEYS = {'key1', 'key2'}与unpack它:'key1', '', 'key2', ''?谢谢!
x = {1, 2, 3}
y = {4, 5, 6}
z = x + y
Run Code Online (Sandbox Code Playgroud)
我有两个表x,y并且只想创建第三个表,它只是其中两个的元素(未排序)。我努力使用了上面的代码,但这给出了错误input:3: attempt to perform arithmetic on a table value (global 'x')......
我在 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) 我正在尝试将变量分配给表,如下所示:
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"实际上在做什么.
对不起,如果这是一个基本问题,任何帮助表示赞赏!