Ruby on Rails 6 : Ruby 문법 톺아보기 2 - if, unless, case, nil, 조건연산자

kanikim·2022년 2월 28일
1

Ruby on Rails

목록 보기
3/4

제가 주로 활동하는 커뮤니티 HOLIX의 개발하는 사람들에서 다양한 개발자분들과 이야기를 나누어 보세요!

https://github.com/kanikim 방문도 많이 해주세요!


저번 글에서 말했다 싶이, Ruby on Rails는 Ruby를 기반으로 한 풀 프레임워크입니다. 그렇기에 어느정도 Ruby 언어에 대한 숙지가 필요합니다. 저번 글에 이어서 대략 4~5개 정도의 글을 Ruby 언어에 대한 간략한 톺아보기로 채워보려고 합니다. 이번 시간에는 if와 이를 통한 데이터 입출력 등을 함께 보기로 하겠습니다.

조건문 및 조건연산자

true, false, nil

먼저 조건문 및 조건연산자에 들어가기 전에 true, false, nil에 대해 들어가겠습니다. 먼저 Ruby크게 다음과 같은 상황에서 true인지 false인지 갈립니다.

  • false 또는 nil은 모두 거짓
  • 그 외의 경우는 전부 참

조금 의아하게 생각하실 수도 있습니다. 바로 0의 경우 과연 true인지 false인지 어디에 포함되는건지 궁금하실 겁니다. 정답은 바로 true입니다. 이 부분이 python하고 다른 부분입니다.

위의 예시처럼 value = 0인 상태에서 if value를 하면 값이 출력되는 것을 알 수 있습니다. 이 부분을 주의하셔서, 다른 nil의 경우는 python의 None하고 비슷하다 보시면 됩니다.


조건연산자

다른 언어들처럼 Ruby에도 조건 연산자가 있습니다.

  • && : and
  • || : or
  • ! : not

이런 Ruby의 연산자는 다른 연산자와 비슷합니다. 다음과 같은 예시에서 보시다시피 다른 프로그래밍 언어와 비슷합니다. Python하고 다른 점이 있다면, 조건 연산자에 쓰인 피연산자를 되돌려준다는 겁니다. 이것이 무슨 말인지 한번 확인해보겠습니다.

조건 연산자의 결과로 Ruby는 true, false가 아닌, 그 연산자에 사용된 피연산자의 값이 마지막으로 걸리는 즉, 결과가 도출되는 부분이 되는 곳의 값을 내줍니다. 위의 결과를 보시면 이해가 될것입니다.

  1. "hello" && "kani" && nil

nil의 경우 false로 처리한다고 했으니, 이 값 전체는 false입니다. 하지만 결과값은 이 결과가 도출되는 부분이므로 nil이 됩니다.

  1. "hello" && "kani" && nil || true

다른 프로그래밍 언어처럼 왼쪽부터 차례차례로 계산됩니다. 이때 nil까지 계산된 결과가 nil이므로 || 연산자는 마지막에 nil || true로 계산됩니다. 이때 결과값이 true가 되므로 true가 반환됩니다.

  1. "hello" && "kani" && nil || "world!"

2번처럼 마지막 nil || "world!"가 계산되는데, 이 때 "world!"는 참인 값이므로 결과적으로 참이며 이때 걸린 부분인, 영향을 준 피연산자, "world!"가 답으로 나옵니다. 이렇게 조건 연산자를 본격적으로 익혔으니 본격적으로 if문에 대해서 알아보겠습니다.

if 문

if condition A
	statement
elsif condition B
	statement
else
	statement
end

위의 구조가 대체적인 Ruby에서의 조건문의 구조입니다. 주의하실 점은 다른 언어와 달리 else if나, elif가 아닌, elsif로 추가 조건문을 쓴다는 점입니다. 그래서 다음과 같이 써볼 수 있습니다.

country = "italy"
if country == "korea"
	puts "안녕하세요"
elsif country == "us"
	puts "Hello
else
	puts "???"
end

위의 결과는 무엇일까요? 결과는 "???"입니다. 여기서 중요한 점은 if문의 statement에서 값을 되돌려준다는 것을 이용해서 변수 자체에 if문을 대입할 수 있습니다.

위의 코드처럼 greeting 자체에 if문을 할당해서, if문의 결과값을 받아옵니다.

unless문

Ruby에는 if문의 반대가 되는 unless문이 있습니다. 말 그대로 if에다가 not을 씌운 것이라고 보면 됩니다. 다음과 같이 쓰면 됩니다.

우의 예시에서 쓴 unless status == "ok"를 if문으로 바꾸어 보면 if status != "ok"가 됩니다.

case문

case variable
when conditionA
	statement
when conditionB
	statement
when conditionC
	statement
else
	statement
end

위의 예시처럼 사용됩니다. 예를 들어 다음과 같이 코드를 작성하면 됩니다.

Summary

이렇듯 이번 글에서는 조건연산자와 if문, case, 조건연산자 등에 대해 알아보았습니다. 다음 시간에는 반복문 등에 대해 알아보겠습니다. 감사합니다.

profile
Backend Developer

0개의 댓글