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

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

★프로그래밍/Ruby :: 2016.08.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 6    Yday 29    Tot 67,005
Juwan Park
Juwan Park's blog is powered by Daum and TISTORY.
Contemporary Blue for TISTORY.
Designed by Juwan Park. Creative Commons License
▲ TOP