|| - 논리 OR 연산자
|| - 논리 OR 연산자 (Logical OR Operator)
||(or)는 왼쪽 피연산자를 평가해요. 그 값이 falsey 하면 오른쪽 피연산자를 평가해서 그 값을 갖고, 그렇지 않으면 왼쪽 피연산자의 값을 가져요. 이 연산자의 타입은 양쪽 타입의 유니온이에요.
||를 if의 문법 설탕이라고 생각할 수 있어요:
some_exp1 || some_exp2
위 코드는 다음과 같아요:
tmp = some_exp1
if tmp
tmp
else
some_exp2
end
출처: Crystal 공식 문서
본문
||는 크게 두 가지로 이해할 수 있어요.
첫째, 값 선택이에요. 왼쪽 값이 truthy이면 왼쪽 값을, falsey이면 오른쪽 값을 결과로 가져요. 이건 some_exp1 == falsey일 때만 오른쪽이 평가된다는 뜻이기도 해요. 그래서 nil이나 false일 때 기본값을 주는 패턴에 자주 쓰여요.
둘째, 타입이에요. 결과의 타입은 양쪽 피연산자 타입의 유니온이 돼요. 예를 들어 nilable_thing || fallback처럼 쓰면 결과 타입에 Nil이 포함될 수 있어요.
Crystal은 nil과 false만 falsey로 취급한다는 점을 기억하면, ||가 어떤 값을 어떤 순서로 고르는지 예측하기 쉬워져요.
더 알아보기
||는 왼쪽이 falsey일 때 오른쪽을 평가해 값을 고르고, 결과 타입은 양쪽의 유니온이에요.- 기본값을 주거나 nil 방어용으로 자주 쓰이며, 논리 AND 연산자인
&&와 대비해서 보면 이해가 쉬워요.