如何在Lua表中的一系列值上执行函数

时间:2014-10-03 03:34:23

标签: lua lua-table

我有一个程序,它将字母作为输入,在表中找到它们分配的数字,并在给出完成的数字对(编码字母)作为输出之前对该数字运行一些数学运算。我设置了函数来检查输入了哪个字符,并运行数学运算,但我的代码如下所示:

checkchar(chars[1])
checkchar(chars[2])
checkchar(chars[3])
checkchar(chars[4])
checkchar(chars[5])
checkchar(chars[6])
checkchar(chars[7])
checkchar(chars[8])
checkchar(chars[9])
checkchar(chars[10])
checkchar(chars[11])
checkchar(chars[12])
checkchar(chars[13])
checkchar(chars[14])
checkchar(chars[15])
checkchar(chars[16])
checkchar(chars[17])
checkchar(chars[18])
checkchar(chars[19])
checkchar(chars[20])
checkchar(chars[21])
checkchar(chars[22])
checkchar(chars[23])
checkchar(chars[24])
checkchar(chars[25])

效率很高,加上它会产生25个字符的限制,因为我真的不想粘贴这个东西100次。

有没有办法可以让程序找到已经输入的字符数并使用该数字来决定使用该函数运行多少个值,然后再次使用该数字打印出输入的内容所以我不必打印一堆黑色空格?

1 个答案:

答案 0 :(得分:2)

我不完全确定我是否正确理解了您的问题,但是使用for循环迭代是否可以解决问题?像

for i=1,25 do
  checkchar(chars[i])
end

更好

for _, char in pairs(chars) do
  checkchar(char)
end

如果想要做得更好,并存储结果,你可以使用地图功能

local result = map(checkchar, chars)

地图如下

function map(func, array)
  local new_array = {}
  for i,v in ipairs(array) do
    new_array[i] = func(v)
  end
  return new_array
end