2014-11-13 3 views
2

저는 2 개의 인수를 가진 여러 변수가 있습니다. 그 중 하나와 값을 비교하고 싶습니다. A를 갖기 때문에 If mynumber == x then x = ("NewValue") elseif mynumber == y then .......의 모든 가능성을 쓰지 않고 한 번에 모두 같음을 수정하고 싶습니다. 검사 할 변수가 많이 있습니다. 예 :복수 변수를 비교하십시오

x = 5 and ("Five") 

y = 2 and ("Two") 

z = 10 and ("Ten") 

mynumber = io.read() 

지금 하나 mynumber에 동일한 경우 모든 변수 내에서 확인하고, 그래서

를 XXX하는 그 (이) 변수 (들)을 변경, 당신은 그렇게 할 수있는 방법을 알 수 있습니까? 당신이 숫자 단어를 변환하려는 경우 숫자로 자신을

local lookup = { 
    foo = "bar", 
    bar = "baz", 
    baz = "foo", 
    ["some thing"] = "other thing", 
} 

local x = "foo" 
x = lookup[x] 

:

+0

죄송합니다, 나는이 사이트에서 새로운 것을 의미하지 않았습니다. 나는 그 변화를 보지 못했다. 나는 실수를 바로 잡는 중이었습니다. 왜 의견을 말하지 않습니까? – Dryon

+0

오, 나는 내가있는 동안 편집 중이었던 것 같아. 그래서 너는 내 것을 덮어 썼다. –

+0

그래, 그게 다야. 나는 단지 변수 예를 추가하고 있었다. 이 게시물을 더 읽기 쉽도록 만들어 주셔서 감사합니다 (우리는 스위스 인입니까, 영어는 제 1 언어가 아닙니다) – Dryon

답변

3

테이블을 사용

local lookup = { 
    One = 1, 
    Two = 2, 
    Three = 3, 
    -- Continue on for however long you need to 
} 

local x = "Two" 
print(lookup[x]) -- Prints 2 

local y = 3 
print(lookup[y]) -- Prints nil, the number 3 isn't in the table 

-- Better: 
print(lookup[x] or x) -- Prints 2, as there was a truthy entry in lookup for x 
print(lookup[y] or y) -- Prints 3; there wasn't a truthy entry in lookup for y, but y is truthy so that's used. 

이 거대한 경우 - 다른 체인보다 조금 더 실용적이다, 그러나 더 큰 수를 위해 아직도 성가신 일 수있다. 이를 지원해야하는 경우 각 자릿수 (예 : "Thirty Two" ~ {"Thirty", "Two"})를 분리해야 할 수 있습니다.

+0

그래,이 방법을 시도했지만 여전히 x에 해당하는 변수를 변경하는 방법을 모르거나 이해하지 못한다. – Dryon

관련 문제