2014-10-03 2 views
1

문자를 입력으로 사용하고, 테이블에서 할당 된 번호를 찾고, 그 번호에 대해 몇 가지 연산을 실행하는 프로그램이 있습니다. 숫자 (인코딩 된 문자)를 출력으로 사용합니다. 내가 입력 된 문자를 확인하고, 수학을 실행하도록 설정 기능을 가지고 있지만, 내 코드는 다음과 같습니다함수를 루아 테이블의 값 범위에서 실행하는 방법

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

어떻게 귀하의 의견을 얻었습니까? 코드의 일부를 보여주십시오. –

+1

왜 [다른 질문] (http://stackoverflow.com/questions/26167239/split-a-string-into-individual-characters)에 대한 답변을 바탕으로 얻은 표의 값을 조작하지 않는 것입니까? - 그리고 - 자리에 문자 - 테이블로)? 예를 들어'ipairs '사용. –

답변

2

정확하게 문제를 이해할 수 있을지 모르지만 for 루프를 사용하여 반복적으로 문제를 해결할 수 있습니까?

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

그것을 더 좋은 이벤트를하고 싶은 경우

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

더 나은 및 저장 결과와 마찬가지로, 당신은지도 기능을 사용할 수 있습니다지도는 다음

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

local result = map(checkchar, chars)