Juwan Park :: 루비에서는 0도 참값(true)으로 본다?

루비에서는 0도 참값(true)으로 본다?

★프로그래밍/Ruby :: 2016. 8. 17. 23:37

C언어나 자바스크립트, 파이썬 등에 익숙해지신 분이라면 0을 false로, 0이 아닌 값을 true로 본다는 사실을 알고 계실지도 모르겠습니다.
※ (자바스크립트 말고) 자바는 if(v)의 형식일 때 v가 논리형 아니면 오류가 일어나므로 논외로 하고,

하지만,

0은 곧 거짓(false)이라는 통념은 루비에는 적용되지 않는 이야기라는 사실을 알고 계신가요?

아래 코드를 봅시다.

a = 0

if (a)
  puts "True"
else
  puts "False"
end

'0 = false' 통념대로라면 이 코드는 'False'라는 메시지를 출력할 것처럼 보입니다.

하지만 실제로 이 코드를 실행시키면

True

이와 같이 'False'가 아닌 'True'가 표시됩니다. 이 코드를 C언어, 파이썬, BASIC 등에 이식해서 실행하면 'False'가 나오지만 루비에서는 'True'가 나옵니다.

이는 루비가 0도 참(true)으로 보기 때문에 그렇습니다.

문자열도 마찬가지로, 빈 문자열("") 역시 루비에서는 참(true)으로 봅니다.
즉, 저 앞의 코드에서 a = 0을 a = ""로 바꿔도 역시 같은 결과가 나옵니다.

그렇다면 루비에서는 무엇을 거짓값(false)으로 보느냐...

nil과 false 이 두 개 뿐입니다. 즉, 이 두 개가 아니면 어떤 값이든 참값(true)으로 봅니다.

만약 저 상황에서 0값을 거짓값으로 규정하고 싶다면...

a = 0

if (a != 0)
  puts "True"
else
  puts "False"
end

이와 같이 조건식을 이용하는 방법이 있습니다.


유용한 팁이었나요? 많은 도움 되셨기를 바랍니다.

(※참고: 루비 말고도 루아(Lua) 역시 nil과 false만을 거짓값으로 규정하여 0도 참값으로 봅니다.)


댓글을 달아 주세요.

Today 27    Yday 25    Tot 73,535
Juwan Park
Juwan Park's blog is powered by Daum and TISTORY.
Contemporary Blue for TISTORY.
Designed by Juwan Park. Creative Commons License
▲ TOP