Lua指针将3个函数合并

如何创建指针,以便可以制作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
点赞
用户1266551
用户1266551

假设您有如下代码:

local places1 = {some data}
local places2 = {some data}
local places3 = {some data}

local char1 = 一个带有 moveObject() 函数的表
local char2 = 一个带有 moveObject() 函数的表
local char3 = 一个带有 moveObject() 函数的表

那么我会这样做:

-- 创建 char 和 places 的配对
local char_place_pairs = {
    {char = char1, places = places1},
    {char = char2, places = places2},
    {char = char3, places = places3},
}

-- 遍历配对并针对每个 places 中的元素调用 moveObject 函数
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
2016-04-18 11:36:49
用户2858170
用户2858170

你不需要为三个表实现三个函数,只需实现一个函数,可以调用三次。

例如:

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

有许多许多方法。

2016-04-18 12:21:05