【问题标题】:Lua pointers to merge 3 functions用于合并 3 个函数的 Lua 指针
【发布时间】:2016-04-18 20:21:05
【问题描述】:

如何创建指针,以便我可以创建 1 个函数而不是 3 个函数?
我有这样的功能:

for a,b in pairs(places3) do
    char3.moveObject(b[1]) 
end

有没有办法做这样的事情?

for i=1,3,1 do
    for a,b in pairs(places+i) do
        char+i.moveObject(b[1]) 
    end
end

【问题讨论】:

    标签: lua


    【解决方案1】:

    您不必为三个表实现三个函数。只需实现 1 个函数,该函数接受一个表并调用它 3 次。

    类似:

    function move(places, char)
      for _, place in pairs(places) do
        char.moveObject(place)
      end
    end
    

    然后只需调用

    move(places1, char1)
    move(places2, char2)
    move(places3, char3)
    

    或将所有字符和位置放入表格中

    places = {places1, places2, places3}
    chars = {char1, char2, char3}
    
    for i, char in ipairs(chars) do
      move(places[i], char)
    end
    

    有很多方法。

    【讨论】:

      【解决方案2】:

      假设您有以下内容:

      local places1 = { some data }
      local places2 = { some data }
      local places3 = { some data }
      
      local char1 = some table with a moveObject() function
      local char2 = some table with a moveObject() function
      local char3 = some table with a moveObject() function
      

      那么我会这样做:

      -- create pairs of char and places
      local char_place_pairs = {
          { char = char1, places = places1 },
          { char = char2, places = places2 },
          { char = char3, places = places3 },
      }
      
      -- iterate over the pairs and per pair call the moveObject function for each entry in places
      for _,char_place_pair in pairs(char_place_pairs) do
          for a,b in pairs(char_place_pair.places) do
              char_place_pair.char.moveObject(b[1]) 
          end
      end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-25
        • 2020-06-30
        • 1970-01-01
        相关资源
        最近更新 更多