我想知道Lua表使用了多少内存 - 没有遍历表内容并计算使用量.是否有Lua 5.1功能或第三方库可以帮助解决这个问题.
我有一张桌子,我在其中传递名字:
names = {'Sachin', 'Ponting', 'Dhoni'}
在其他表格中,我传递的是国名:
country = {"India", "Australia", "India"}
我想要输出表:
out_table = {Sachin="India", Ponting="Australia", Dhoni="India"}
lua如何处理表的增长?
它等同ArrayList于Java吗?即需要连续内存空间,并且随着它比已经分配的空间增大,内部数组被复制到另一个内存空间.
是否有一种聪明的方式来领导它?
我的问题是,如何将表存储在内存中?我不是在问Lua如何实现数组.
很难掌握Lua中的继承(和元表)概念。官方教程没有具体说明如何为子类创建构造函数。
我的示例的问题player:move()是nil,因此播放器仍然是Object课程
-- Generic class
Object = {}
function Object:new (type,id,name)
o = {}
self.type = type or "none"
self.id = id or 0
self.name = name or "noname"
setmetatable(o, self)
self.__index = self
return o
end
function Object:place(x,y)
self.x = x
self.y = y
end
-- Player class
Player = Object:new()
function Player:new(id,name)
o = Object:new("player",id,name)
o.inventory = {}
o.collisions = {}
return o
end
function Player:move(x,y)
return print("moved to " ..x.." x …Run Code Online (Sandbox Code Playgroud) 抱歉,我仍在学习lua。您能纠正我吗,为什么文件中的数据无法逐行读取?
这是我在points.txt文件中的示例数据:
lexxo:30:1
rey:40:2
lion:40:2
prince:50:3
royal:50:3
Run Code Online (Sandbox Code Playgroud)
所以当我从上面得到的是二维数组(表)
player = {{(name),(points),(which var point earned on index)},
{(...),(...),(...)}};
Run Code Online (Sandbox Code Playgroud)
所以问题是,当我尝试循环打印文件中的所有数据时。它只打印最后一行。所以我想要打印所有的
line_points = {}
player_data = {{}}
local rfile = io.open("points.txt", "r")
for line in rfile:lines() do
playername, playerpoint, playeridpoint = line:match("^(.-):(%d+):(%d+)$")
player_data = {{playername, playerpoint, playeridpoint}}
line_points[#line_points + 1] = player_data
end
for i = 1, #player_data do
player_checkname = player_data[i][1] -- Get Player Name From Array for checking further
player_checkpnt = player_data[i][3] -- Get Player ID Point From Array …Run Code Online (Sandbox Code Playgroud) 我目前面临的问题是你不能__gc在 Lua 5.1 中使用表的方法,因为它们是在 Lua 5.2 中实现的。但是,我想在收集 lua 表后释放分配的本机资源。是否可以制定一个解决方法,__gc为 Lua 5.1 提供 Lua 5.2 中元方法的功能?
有没有办法按照下面的表格以与写入的顺序相同的方式循环一个表格?
local tbl = {
["hello"] = 1,
[2] = 2,
[50] = 3,
["bye"] = 4,
[200] = 5
}
Run Code Online (Sandbox Code Playgroud)
我的意思是,当我使用"成对"时,每次执行代码时我都会得到不同的顺序......
我正在寻找这样的东西:
function get_keys(tbl)
local rtable = {}
for k,v in pairs(tbl) do
table.insert(rtable, k)
end
return rtable
end
local keys_of_tbl = get_keys(tbl)
for i = 1, table.getn(keys_of_tbl) do
--Do something with: tbl[keys_of_tbl[i]]
end
Run Code Online (Sandbox Code Playgroud)
但是因为函数"get_keys"再次基于"成对",它将无法工作......
我找不到问题的答案:Can you have an array as value in a lua table?
local colors = {"blue" = {0,0,1,1}, "green" = {0,1,0,1}, "red" = {1,0,0,1} , "orange" = {0.5, 0, 0.5, 1}, "black" = {0,0,0,1}, "gold" = {1, 215/255, 0, 1}}
Run Code Online (Sandbox Code Playgroud)
我使用 corona sdk 在这一行收到错误:
'}' 预计位于 '=' 附近
我有包含多个值的表,我想打印每个值。
像是:
“值_1”“值_2”等等。
table = {
{'value_1'},
{'value_2'},
{'value_3'},
{'value_4'},
}
Run Code Online (Sandbox Code Playgroud)
我尝试过for k, v但失败了:
for k, v in pairs(table) do
print(v)
end
Run Code Online (Sandbox Code Playgroud) 我有一个由键/值对组成的表:
mytable[a] = 1,
mytable[b] = 4,
mytable[r] = 7,
mytable[f] = 2,
Run Code Online (Sandbox Code Playgroud)
ETC。
我想按数字对表格进行排序。所以我希望表格为 {(a, 1), (f, 2), (b, 4), (r, 7)} 我尝试使用
table.sort(mytable, function(a, b) return a[2] > b[2] end)
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用...谢谢