这些表格使用以下代码填充:
str = "parameters determined by program (all digits)"tableone = {}for word in str:gmatch("%d") do table.insert(tableone,word) end
两个表都是相同的,当然除了各个表名.表格正确填充,并在打印时正确显示.为了这个问题,这里有两个表:
tableone = {}tabletwo = {}for i=1,4 do table.insert(tableone,i) endfor i=1,4 do table.insert(tabletwo,i) end
显然,这两个表将彼此相等.我写的比较索引表的函数如下:
function comparetables(t1,t2)matchct = 0 for i=1,#t1 do if t1[i] == t2[i] then matchct = matchct + 1 endif matchct == #t1 thenreturn trueendend
我试过了
print(comparetables(tableone,tabletwo))
看它是否打印“真实”但没有运气.对我而言,它似乎应该没有问题.但事实并非如此.我错过了什么?我已经尝试过像某个人可能已经编写的table.compare函数一样的东西,但找不到这样的运气.谢谢你的任何建议!
附加信息:
我正在比较表格的原因是为了一个主人型游戏.这意味着在比较表时必须遵循以下三条规则.我创建的功能是让我开始,以为我可以从那里工作.
>比较表时,如果数字匹配,则Ccount增加1.
>比较表时,如果值存在于不同的索引位置,则将Pcount增加1
例如,使用值{1,3,4}的值表和{4,4,1}的猜测,它将返回Pcount为2(一个4和1)和一个Ccount为1 (三位在第三位).我认为最困难的部分之一就是要进行比较,以确认猜测中的第二个4不应该增加Pcount.
解决方法 如果你在面向对象的意义上比较比tabley更客观的对象,那么我会看看以lua OO方式实现这些函数.像这样的东西应该做的伎俩:
GameState = {}GameState.mt = {}GameState.mt.fns = {}GameState.mt.__index = GameState.mt.fnsfunction GameState.new(a,b,c,d)-- Todo: put argument checks here... local retval = {} retval[1] = a retval[2] = b retval[3] = c retval[4] = d setMetatable(retval,GameState.mt) return retvalendfunction GameState.mt.fns.print( self ) print(" GameState: ",self[1],self[2],self[3],self[4] )endfunction GameState.mt.__tostring( self ) return "GameState: "..self[1].." "..self[2].." "..self[3].." "..self[4]endfunction GameState.mt.__eq(self,other) -- Check it's actually a GameState,and all its bits match return getMetatable(other)==GameState.mt and (self[1] == other[1]) and (self[2] == other[2]) and (self[3] == other[3]) and (self[4] == other[4])end
然后你会像这样使用它:
state1 = GameState.new(1,2,4)state2 = GameState.new(1,4)print("State 1 is:")state1:print()print("State 2 is:")print(state2)print( "state1 == state2 : ",state1 == state2 )print( "Changing state 2") state2[1]=2print( "state1 == state2 : ",state1 == state2 )总结
以上是内存溢出为你收集整理的在lua中按索引值比较两个索引表全部内容,希望文章能够帮你解决在lua中按索引值比较两个索引表所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)