or — 첫 번째로 참이 되는 값을 돌려주기

or — 첫 번째로 참이 되는 값을 돌려주기

조건들 중 하나라도 만족되는지를 확인할 때 or만큼 간단한 게 없어요. or매크로로, 폼들을 왼쪽에서 오른쪽으로 하나씩 평가하다가 처음으로 참이 나오는 순간 그 값을 돌려주고 멈춰요.

출처: OR - Common Lisp HyperSpec

시그니처

or form* => result*

본문

인자와 값

  • form이에요.
  • results — 마지막으로 실행된 form의 평가에서 나오는 값들 또는 주요 값이에요. (아래 설명 참고) 또는 nil이에요.

설명

form을 하나씩, 왼쪽에서 오른쪽으로 평가해요. 어떤 form(즉 nil이 아닌 것)으로 평가되면 모든 form의 평가는 그 시점에서 끝나요.

마지막 form이 아닌 어떤 form의 평가가 주요 값으로 을 돌려주면, or는 남은 form들을 평가하지 않고 즉시 그 을 돌려줘요(단 추가 은 없어요). 마지막 form을 제외한 모든 form주요 값으로 거짓을 돌려주면, or는 마지막 form이 돌려준 모든 값을 돌려줘요. form이 하나도 주어지지 않으면 nil을 돌려줘요.

예제

(or) =>  NIL
(setq temp0 nil temp1 10 temp2 20 temp3 30) =>  30
(or temp0 temp1 (setq temp2 37)) =>  10
temp2 =>  20
(or (incf temp1) (incf temp2) (incf temp3)) =>  11
temp1 =>  11
temp2 =>  20
temp3 =>  30
(or (values) temp1) =>  11
(or (values temp1 temp2) temp3) =>  11
(or temp0 (values temp1 temp2)) =>  11, 20
(or (values temp0 temp1) (values temp2 temp3)) =>  20, 30

더 알아보기

  • and — 모든 조건이 참일 때
  • some — 시퀀스 조건 검사
  • unless — 거짓일 때 실행