求助帖 遇到一个问题
lua吧
全部回复
仅看楼主
level 2
熬夜ss的 楼主
初学者,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
我只改变一个,但是都改变了,
使用第二种的表的时候就能实现只改变一个,
这是为什么?
2018年04月17日 03点04分 1
level 2
熬夜ss的 楼主
#!/usr/local/bin/lua
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 Set(list)
local first={}
local second={true,0}
for _,v in pairs(list) do
first[v]=second
end
return first
end
function count_add(list,word)
local l=list
l[word][2]=l[word][2]+1
return l
end
reserve=Set{"while","end","function",}
--reserve={["while"]={[1]=true,[2]=0},["end"]={[1]=true,[2]=0},["function"]={[1]=true,[2]=0},}
manage=true
while(manage) do
word=io.read()
if (word=="list") then
list_print(reserve)
elseif (word=="out") then
manage=false
elseif (reserve[word]) then
print(word.."是标识符")
reserve=count_add(reserve,word)
else
print(word.."不是标识符")
end
end
2018年04月17日 10点04分 3
level 2
熬夜ss的 楼主
我只想修改table内的单个值,但是全部都被修改了
2018年04月17日 10点04分 4
1