初学者,bbs.luaer.cn关闭注册,就来这问问
我想用这个
第一种
reserve=Set{"while","end","function",}
function Set(list)
local set ={}
local value={[1]=true,[2]=0}
for _,v in ipairs(list) do
set[v]=value
end
return set
end
实现这个
第二种
reserve={["while"]={[1]=true,[2]=0},["end"]={[1]=true,[2]=0},["function"]={[1]=true,[2]=0},}
用这个
function list_print(reserve)
for k,v in pairs(reserve) do
print(k)
for m,n in pairs(reserve[k]) do
print(m)
print(n)
end
end
end
输出的值是一样的
function
1
true
2
0
while
1
true
2
0
end
1
true
2
0
但是使用第一种生成的表执行这句语句后 reserve[word][2]=reserve[word][2]+1
会输出成这样
function
1
true
2
1
while
1
true
2
1
end
1
true
2
1
我只改变一个,但是都改变了,
使用第二种的表的时候就能实现只改变一个,
这是为什么?
我想用这个
第一种
reserve=Set{"while","end","function",}
function Set(list)
local set ={}
local value={[1]=true,[2]=0}
for _,v in ipairs(list) do
set[v]=value
end
return set
end
实现这个
第二种
reserve={["while"]={[1]=true,[2]=0},["end"]={[1]=true,[2]=0},["function"]={[1]=true,[2]=0},}
用这个
function list_print(reserve)
for k,v in pairs(reserve) do
print(k)
for m,n in pairs(reserve[k]) do
print(m)
print(n)
end
end
end
输出的值是一样的
function
1
true
2
0
while
1
true
2
0
end
1
true
2
0
但是使用第一种生成的表执行这句语句后 reserve[word][2]=reserve[word][2]+1
会输出成这样
function
1
true
2
1
while
1
true
2
1
end
1
true
2
1
我只改变一个,但是都改变了,
使用第二种的表的时候就能实现只改变一个,
这是为什么?