求助 这个问题

[复制链接]
查看1729 | 回复3 | 2022-1-23 00:12:11 | 显示全部楼层 |阅读模式

a={1,2,3,4,5,6}

b={3,4,5,6}

function aaa(w,e)
        local  a=w  b=e
        print(b)
        for k,v in pairs(a)  do
               
               
                for k1,v1 in pairs(b)  do
                       
                        if  v1==v  then
                               
                                table.remove(b,k1)
                               
                        end
                       
                end
               
        end
       
end
aaa(a,b)

print(b)
aaa(a,b)

print(b)

遍历的时候 B 每找到一个就移除找到的 之后 下次再调用的时候  怎么让B不是空的




回复

使用道具 举报

蜗牛 | 2022-1-23 17:55:18 | 显示全部楼层
本帖最后由 蜗牛 于 2022-1-23 18:13 编辑

这样??

  1. function clone(object)
  2.     local lookup_table = {}
  3.     local function _copy(object)
  4.         if type(object) ~= "table" then
  5.             return object
  6.         elseif lookup_table[object] then
  7.             return lookup_table[object]
  8.         end
  9.         local newObject = {}
  10.         lookup_table[object] = newObject
  11.         for key, value in pairs(object) do
  12.             newObject[_copy(key)] = _copy(value)
  13.         end
  14.         return setmetatable(newObject, getmetatable(object))
  15.     end
  16.     return _copy(object)
  17. end

  18. a={1,2,3,4,5,6}

  19. b={3,4,5,6}



  20. function aaa(w,e)
  21.         local c = {}
  22.         c = clone(b)

  23.         local  a = w  b = e

  24.         for k,v in pairs(a)  do
  25.                
  26.                 for k1,v1 in pairs(b)  do
  27.                        
  28.                         if  v1==v  then
  29.                                
  30.                                 table.remove(b,k1)
  31.                
  32.                         end
  33.                        
  34.                 end
  35.                
  36.         end

  37.     b = clone(c)
  38.        
  39. end
  40. aaa(a,b)

  41. print(b)
  42. aaa(a,b)

  43. print(b)
复制代码


回复

使用道具 举报

ca0111 | 2022-1-26 16:06:53 | 显示全部楼层
嗯,大概这个意思,调用了复制的,还是函数内定义,我本来的想法是因为每次便利都要循环a*b次,想下次少循环循环所以想问问
回复

使用道具 举报

277811607 | 2022-4-14 09:55:13 | 显示全部楼层

嗯,大概这个意思,调用了复制的,还是函数内定义,我本来的想法是因为每次便利都要循环a*b次,想下次少循环循环所以想问问
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

13

主题

41

帖子

1552

积分

金牌会员

Rank: 6Rank: 6

积分
1552