2009-08-23 5 views
3

다른 언어로 사용했지만 루아는이 유용한 기능이 부족한 것 같습니다.루아 10 진수 부호?

멋진 chappies가 루아 기능을 제공하여 전달 된 숫자의 부호를 얻을 수 있습니까?

+6

음 ... 0보다 작 으면 음수입니까? –

답변

-3

당신은이 같은 sign를 확인할 수 있습니다

i = -2 
if i == math.abs(i) then -- or i >= 0 
    print "positive" 
else 
    print "negative" 
end 
사람이 하나 실수를 한단다 그냥 경우 :, 여기 내 어떻게 든 짧은 버전
+0

흠. 충분히 공평합니다. –

+2

-1 : 단일 비교 연산자로 부정적 여부를 확인할 수있는 경우 왜 함수를 호출하고 비교합니까? 루아에서는 이것이 실패 할 수 있다고 생각하지 않지만 다른 언어에서는 int 형이고 math.abs가 double 형을 반환하면 실패 할 수 있습니다. 필요 이상으로 코드를 작성하지 마십시오. –

+0

@Jonathan : 왜 '수학 .abs'라고 부르는 거니? 나는 비교로서'> ='비교에 넣었다. 당신은 당신이 좋아하는 것을 선택할 수 있습니다. –

12
function math.sign(x) 
    if x<0 then 
    return -1 
    elseif x>0 then 
    return 1 
    else 
    return 0 
    end 
end 
+2

나는 표준 라이브러리 네임 스페이스를 분류하지 않을 것이다. –

+9

나는 그것이 필사적 인 죄라고 생각하지 않는다. – lhf

+3

IMO, 아직 사용 가능하지 않고 네임 스페이스 오염이 확실한 경우에만 설정을 변경하십시오. 'math.sign = math.sign 또는 function (x) x <0 및 -1 또는 x> 0 및 1 또는 0 end' , 이것은 동일한 기능을 정의하는 경우 동일한 동작을 사용하는 다른 라이브러리에 의존합니다.) – Deco

7

:

function sign(x) 
    return x>0 and 1 or x<0 and -1 or 0 
end 
+1

우선 순위가 높은 괄호를 사용할 수는 있지만 좋아합니다! – Twisol

3

을 나는 아이디어를 생각한다 양수 또는 음수를 나타 내기 위해 1 또는 -1을 반환하는 것입니다. 나는 당신이 그것을 0으로 되돌리기를 원할 것이라고 생각하지 않습니다. 재앙적인 결과를 가져올 수 있습니다. 당신은 내가

function sign(x) 
    return (x<0 and -1) or 1 
end 
으로 다루고 싶어요 0

에 값을 변경 거라고는 0을 반환 할 때 기호 (x)를 곱하여 값의 부호를 변경하려고 대신의 부호를 변경 상상

x/ math.abs(x) 

가 난 단지 정수의 하나를 사용하십시오 루아는 수레에서의 int를 구분하지 않기 때문에, 나는에 루아에서 사용하지 않는 게 좋을 :

-1

당신은 또한이 같은 숫자의 부호를 얻을 수 있습니다 모든.

+3

x = 0에서는 작동하지 않습니다. – lhf