为什么这个Lua表中只有4个字段?不应该有7个?
polyline = {color="blue", thickness=2, npoints=4,
{x=0, y=0},
{x=10, y=0},
{x=-10, y=1},
{x=0, y=1}
}
print(table.maxn(polyline)) -- returns 4. Why?
print(polyline[2].x) -- returns 10. Why?
Run Code Online (Sandbox Code Playgroud)
我认为polyline[2]会索引到"厚度",这是此表中的第二个字段.
需要创建一些表,以便我可以通过这种方式从中获取信息:
table[attacker][id]
Run Code Online (Sandbox Code Playgroud)
如果我会使用
print(table[attacker][id])
Run Code Online (Sandbox Code Playgroud)
它应该打印该值.
尝试了很多方法,但没有找到任何好处......
我猜应该是这样的......
table.insert(table, attacker, [id] = value)
Run Code Online (Sandbox Code Playgroud)
^这不起作用.
有人能帮我吗?
编辑
好吧,当我这样尝试时:
x = {}
function xxx()
if not x[attacker][cid] then
x[attacker][cid] = value
else
x[attacker][cid] = x[attacker][cid] + value
end
print(x[attacker][cid])
end
Run Code Online (Sandbox Code Playgroud)
我收到一个错误说:
尝试索引字段'?' (零值)
我想为Lua数组中的每个字符串元素存储一些值.
-- Emulating different Browsers
local user_agent = {
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1",
"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.2 Safari/537.36",
"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1467.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 6.1; rv:22.0) Gecko/20130405 Firefox/22.0",
"Mozilla/5.0 (X11; Linux i686; rv:21.0) Gecko/20100101 Firefox/21.0",
"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; FunWebProducts)",
"Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; InfoPath.1; SV1; .NET CLR 3.8.36217; WOW64; en-US)",
"Mozilla/5.0 …Run Code Online (Sandbox Code Playgroud) 我正在将Lua表的内容导出到HTML文件,以便可以在浏览器中显示内容。现在,在将函数参数作为表键传递时遇到问题。
我有这样一个稀疏表:
map = {}
for x = 1, 20 do
map[x] = {}
for y = 1, 20 do
map[x][y] = {}
map[x][y].node = math.random(1,20)
map[x][y].image = "path/to/image.png"
end
end
Run Code Online (Sandbox Code Playgroud)
我将表这样传递给我的函数:htmParser:_dumpSparseToHTML(map,20,20)其中map =我要传递的表,20,20 =数组的宽度和高度。在_dumpSparseToHTML中的某个地方,我将v.node和v.image的值写入文件。我如何在不知道表中键名的情况下处理完全相同的事情?例如map可能包含map [x] [y] .value,map [x] [y] .gfx,map [x] [y] .nodeType,我想将它们作为htmParser:_dumpSparseToHTML(map,20 ,20,值,gfx,nodeType等)。
我知道Lua可以通过将函数定义为_dumpSparseToHTML(map,20,20,...)来处理可变数量的参数。我尝试执行以下操作:
--_table = map
for i,v in ipairs(arg) do
file:write("<td>".._table[x][y].v.."</td>)
end
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:“试图连接字段'v'(nil值)。所以,我的问题是:我如何传递可变数量的参数作为表键?
我想设置表成员的索引,但仍然命名它们.那可能吗?
local table = {
["cat"] = {
["fish"] = { stuff = "bla1", stuff2 = "bla" },
["mouse"] = { stuff = "bla2", stuff2 = "bla" },
["bird"] = { stuff = "bla3", stuff2 = "bla" },
},
["dog"] = {
["fish"] = { stuff = "bla1", stuff2 = "bla" },
["mouse"] = { stuff = "bla2", stuff2 = "bla" },
["bird"] = { stuff = "bla3", stuff2 = "bla" },
},
}
Run Code Online (Sandbox Code Playgroud)
table["cat"][1]是fish,但我想要的table["cat"][0]是 …
我正在尝试使用love2d在lua中设计这样一个表.当我阅读很多关于Lua的教程时,我无法创建这样的表,因为我不理解这个概念.任何人都可以帮我创建这个表吗?

我正在尝试创建一个可以将单词作为输入的程序,找到单词的每个字母,然后通过我拥有的编码系统运行它.每个字母都分配给一个特定的数字.我希望程序能够识别一个字母并将其数字保存到变量中,以便可以通过一些数学运算来运行.我完成了数学部分并且正在工作,但它一次只能占用一个字符.从我在网上找到的LUA表和字符串库的一些教程来看,我的代码应该可以工作,但表总是打印'nil'.
print("Word?")
str = io.read()
chars = {}
for i in string.gmatch(str, "%U") do
table.insert(t, i)
end
print(chars)
Run Code Online (Sandbox Code Playgroud) 正如标题所暗示的那样.考虑这个来源:
A = {}
A.T = true
A.F = false
A.N = 123
A.S = "ASDF"
A.E = ""
for k,v in pairs(A) do
local Ex = ""
if(A[k]) then Ex = "YES"
else Ex = "NO"
end
print(k,v,Ex)
end
Run Code Online (Sandbox Code Playgroud)
哪些打印(订单不同,因为它是pairs):
T true YES
F false NO
S ASDF YES
N 123 YES
E YES
Run Code Online (Sandbox Code Playgroud)
正如你在这里看到的那样A.F = false,if声明说它不存在.有没有更好的方法来查看F作为一个字段在表中是否存在尽管是一个布尔false值,其中写入的值更好pairs?
注意:这是Roblox的Lua版本.我有以下代码片段:
for index, child in pairs(workspace.IMG:GetChildren()) do
xyz = child.Position
ImgScript = {}
table.insert(ImgScript, -1, child.BrickColor.Number, xyz.X, xyz.Y, xyz.Z)
end
Run Code Online (Sandbox Code Playgroud)
那么workspace.IMG一个模型中有一堆砖.我试图将该模型转换为脚本生成器的脚本.所以我可以Instance.new('Part', script) blah blah blah为每块砖做它,但这相当于一个大脚本.所以我正在制作一个包含所有必要信息的表格(BrickColor和Position).这是我希望表格看起来像:
{{BrickColor Number, X, Y, Z}, {123, 14, 52, 65}, {156, 13, 52, 65}, etc.}
Run Code Online (Sandbox Code Playgroud)
但我目前拥有的剧本并没有制作这种表格.它没有做任何事情; 事实上,我不希望它做我要求的事情; 我只是不知道如何制作这种表.
我得到一张表格,可以这样说:
house = {
["Street 22"] = {
{name = "George", age = 20},
{name = "Pete", age = 25}
},
["Street 30"] = {
{name = "John", age = 32},
}
}
Run Code Online (Sandbox Code Playgroud)
我想以编程方式插入第三间房子,即关键的“ Street 35”,上面有一个人的详细信息,尼克和30岁。我对lua比较陌生,不知道该怎么做,我必须使用,table.insert但在遵循上述格式时遇到了麻烦...请帮忙吗?