As an expression
As an expression (표현식으로서의 if)
Crystal에서는 if 자체도 하나의 값을 만들어내는 표현식이에요. 프로그래밍을 처음 접하면 if는 그냥 분기만 하면 되는 줄 알기 쉬운데, Crystal은 각 분기의 마지막 표현식 값이 곧 if의 값이 됩니다.
본문
먼저 if의 값이 어떻게 정해지는지 볼게요. if의 값은 각 분기(branch)에서 마지막으로 실행된 표현식의 값이에요.
a = if 2 > 1
3
else
4
end
a # => 3
어떤 if 분기가 비어 있거나 아예 없으면, 그 자리에 nil이 들어 있는 것과 동일하게 취급돼요.
if 1 > 2
3
end
# 위 코드는 아래와 같아요:
if 1 > 2
3
else
nil
end
# 또 다른 예:
if 1 > 2
else
3
end
# 위 코드는 아래와 같아요:
if 1 > 2
nil
else
3
end
즉, 조건이 거짓이라서 실행되지 않은 분기는 암묵적으로 nil 값을 가지는 셈이에요. 이렇게 if가 값이 된다는 성질 덕분에 분기 결과를 바로 변수에 담거나 다른 표현식에 이어서 쓸 수 있어요.
더 알아보기
if의 기본 동작과 타입 추론이 궁금하다면 if 문서를 확인해 보세요.- 조건에 따라 다른 값을 고르는 더 간결한 방법은 Ternary if에서 다뤄요.