2013-05-20 4 views
0
function isEven(x) 
    print("Checking if "..x.." is even.\nWill return state as 1 if true.") 

    if math.fmod(x, 2) == 0 then 
     state = 1 
    end 

    return state 
end 

저는 isEven을 실행 한 다음 상태 변수를 사용할 수 있다는 것을 알고 있습니다. 그러나 한 줄로 그것을 할 수있는 방법이 있습니까?함수에서 변수 가져 오기

마찬가지로 isEven(8).state?

모든 도움을 주시면 감사하겠습니다.

+0

반환 값을 사용할 수 있습니까? 여기서'state' 변수로 무엇을하고 있습니까? – Dogbert

+0

'state'를 추가하지 않고'isEven (8) == 1 then ... '을 쓰지 않고'isEven (8)'이라고 쓰면됩니다. –

+0

이것은 일어날 수있는 잠재적 인 버그입니다. 여기서'상태'는 ** 전역 변수 **이므로 OP가 혼란 스럽습니다. 거의 항상 프로그래머는 함수에서'local' 변수를 원합니다. 이 같은 변수를'local'로 정의하고 전역 변수로 사용해서는 안됩니다. – dualed

답변

1

에고 (Egor)가 논평에서 말했듯이 이것은 정확하게 반환 값이 의미하는 바입니다. 코드에서 isEven(8)과 같은 함수 호출을 보면 함수의 반환 값으로 계산됩니다.

function isEven(x) 
    print("Checking if "..x.." is even") 
    return (math.fmod(x, 2) == 0) 
end 

print(isEven(8)) 
print(isEven(7)) 

if isEven(8) then 
    print("a") 
else 
    print("b") 
end 

마지막으로, 난 그냥 ISEVEN 기능에 대해 몇 가지를 지적하고 싶습니다 : 당신은 당신이 math.fmod 대신 % 연산자를 사용할 수 있습니다 원하는 먼저 모든 경우. 두 번째로, 사용 된 예제에서이 함수는 숫자 (0 또는 1) 대신 부울 값 (true 또는 false)을 반환합니다.

관련 문제