Raku의 && — 첫 번째 거짓값을 돌려주는 단락(short-circuit) AND
Raku의 && — 첫 번째 거짓값을 돌려주는 단락(short-circuit) AND
여러 조건을 잇는 AND 연산에서 결과가 이미 거짓으로 정해졌는데 뒤까지 계산하는 건 낭비예요. &&는 첫 번째로 거짓인 인자를 돌려주고, 그 뒤의 인자는 아예 평가하지 않는(short-circuit) 연산자예요.
동작 방식
Boolean 맥락에서 첫 번째로 False로 평가되는 인자를 돌려주고, 모두 참이면 마지막 인자를 돌려줘요. 그리고 단락(short-circuit) 동작 때문에, 어떤 인자가 거짓으로 평가되는 순간 그 오른쪽 인자들은 절대 평가되지 않아요.
sub a { 1 }
sub b { 0 }
sub c { die "never called" };
say a() && b() && c(); # OUTPUT: «0»
b()가 0을 돌려주는 순간 &&는 결과를 0으로 확정하고, c()는 호출조차 되지 않아요. 그래서 c가 die를 해도 실행되지 않죠. 이 '평가되지 않음'이 단락 연산의 핵심이에요.
보다 느슨한 우선순위로 같은 역할을 하는 and(Loose AND)도 있어서, 우선순위에 따라 &&나 and 중 골라 쓰면 돼요.