Skip to content

Conversation

@wushi333333
Copy link

测试完成,问题是b遍历经过赋值table后,被清空了
个人觉得107行应该改成
local keys = {}
for k in pairs(lv._lastversion) do --加上._lastversion
keys[k] = true
end

测试完成,问题是b遍历经过赋值table后,被清空了
个人觉得107行应该改成
local keys = {}
for k in pairs(lv._lastversion) do --加上._lastversion
	keys[k] = true
end
@cloudwu
Copy link
Owner

cloudwu commented Jul 27, 2017

local tracedoc = require "tracedoc"

local doc = tracedoc.new {
    a = 1,
    b = { 1,2,3 },
    c = { d = 4 , e = 5 },
    d = {},
}

doc.b[3] = nil
doc.b = { 1,3 } -- remove [3], change [2]

tracedoc.commit(doc, {})

assert(doc.b[1] == 1)
assert(doc.b[2] == 3)

for k,v in pairs(doc.b) do
	print(k,v)
end

-- 1 1
-- 2 3

这里 doc.b 是正常的。

@wushi333333
Copy link
Author

local tracedoc = require "tracedoc"

local doc = tracedoc.new {
a = 1,
b = { 1,2,3 },
c = { d = 4 , e = 5 },
d = {},
}

-- 改变值
doc.b[3] = nil

-- 提交
tracedoc.commit(doc, {})

-- 再改变值
doc.b = { 1,3 } -- remove [3], change [2]

assert(doc.b[1] == 1)
assert(doc.b[2] == 3)

for k,v in pairs(doc.b) do
print(k,v)
end
print("no message")

这样就出问题了

@cloudwu
Copy link
Owner

cloudwu commented Jul 27, 2017

上面代码输出为

1  1 
2  3
no message

正常啊

ps. 请学习一下 markdown 语法,正确贴代码。

@wushi333333
Copy link
Author

local tracedoc = require "app.tracedoc"

local doc = tracedoc.new {
a = 1,
b = { 1,2,3 },
c = { d = 4 , e = 5 },
d = {},
}

print("-----------------------------------")
-- 改变值
doc.b[3] = nil

-- 提交
tracedoc.commit(doc, {})

-- 再改变值
doc.b = { 1,3 } -- remove [3], change [2]

assert(doc.b[1] == 1)
assert(doc.b[2] == 3)

for k,v in pairs(doc.b) do
print(k,v)
end
print("no message")

结果就这样了
[LUA-print] -----------------------------------
[LUA-print] no message
只能说明一个问题,我用的是cocos 自带的lua,版本太低了,导致这个问题的出现

@cloudwu
Copy link
Owner

cloudwu commented Jul 27, 2017

只支持 lua 5.3 , 如果使用低版本 lua ,需要自己实现 pairs 方法,支持 __pairs 元方法。

@wushi333333
Copy link
Author

好的,谢谢了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants