lua排序出现崩溃的情况:
function sort(x,y)
if x.a < y.a then
return true
elseif x.a == y.a then
return (math.random(2) == 2)
end
return false
end
tbl = {{a = 4,b = 1},{a = 2,b = 2},{a = 1,b = 3},{a = 10,b = 4},{a = 1,b = 5}}
for i = 1,100 do
t = "i:" ..i.. "\n"
print(t)
table.sort(tbl,sort)
for k,v in pairs(tbl) do
print(v.a,v.b)
end
end
if x.a < y.a then
return true
elseif x.a == y.a then
return (math.random(2) == 2)
end
return false
end
tbl = {{a = 4,b = 1},{a = 2,b = 2},{a = 1,b = 3},{a = 10,b = 4},{a = 1,b = 5}}
for i = 1,100 do
t = "i:" ..i.. "\n"
print(t)
table.sort(tbl,sort)
for k,v in pairs(tbl) do
print(v.a,v.b)
end
end
原因是lua的快速排序存在问题
-----------------------------------------------------------------------
•模块定义
module( 模块名)
•模块加载
require( 模块名)
加载结果以table的形式加载到全局空间;
可加载Lua文件;
可加载编译后的Lua可加载C实现的动态链文件;
•热更新
require会记住load过的信息,重复调用不会导致模块被重新载入,而dofile会,热更新需要使用dofile;
数据服务分离;
注意引用的影响,更新函数时也应更新函数对应的引用表(包含C中的引用),如果对象持有此函数的应用则会出现不能及时更新的问题;
注意变量的书写形式,需要判定变量是否已经初始化过,以防止更新导致数据丢失(例如:count= count or 0);