2014-10-03 37 views
1

我有一個程序,它以字母作爲輸入,在表中找到它們的分配號碼,然後對該號碼運行一些數學運算,然後給出完成的一對數字(編碼字母)作爲輸出。我已經設置了檢查哪個字符輸入,以及運行的數學函數,但我的代碼如下所示:如何讓一個函數在一個Lua表中的值範圍上執行

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次。

有沒有一種方法可以讓程序找到已輸入的字符數,然後使用該數字來決定使用該函數運行多少個值,然後再次使用該數字打印出什麼是輸入,所以我不必打印一堆黑色空間?

+0

你是如何得到你的意見的?顯示那部分代碼。 – 2014-10-03 03:37:30

+1

爲什麼你不只是根據你的[其他問題]的答案對錶中的值進行操作(http://stackoverflow.com/questions/26167239/split-a-string-into-individual-characters-characters -and-佈局的字符 - 到 - 一個表)?以'ipairs'爲例。 – 2014-10-03 03:43:30

回答

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 
相關問題