논리 연산자는 Boolean 값을 비교하는 데 사용됩니다. 반환 값이 true 나 false 에 따라 참, 거짓 여부가 결정되며 반환 값이 Boolean 형이 아닌 데이터는 파싱 오류가 발생합니다.

예 제 결 과
a && b a와 b 모두 true 일 때
a and b
a || b a나 b 중 하나가 true 일 때
a or b
!a a가 false 일 때
not

&& 나 and 는 주어진 두 값 모두가 true 이면 결과를 표시합니다. 피연산자 중 하나라도 false 이면 결과도 false 가 되므로 표시하지 않습니다. 아래 코드에서 모바일 접속상태이고 현재 페이지가 라벨 검색이면 두 조건 모두가 true 가 되므로 “안녕 하보니” 문구를 표시합니다.

<b:if cond='data:blog.isMobileRequest and data:view.isLabelSearch'>
  <h1>안녕 하보니!</h1>
</b:if>

하지만 && 로 그대로 조건식을 사용할 경우 블로거 편집기에서 구문 분석 오류가 발생하므로 &amp;&amp; 인 엔티티로 변경해줘야 합니다. 예를 들면 다음과 같이 변경해서 사용하세요.

<b:if cond='data:blog.isMobileRequest &amp;&amp; data:view.isLabelSearch'>
  <h1>안녕 하보니!</h1>
</b:if>

and 연산자는 주어진 조건이 모두 참일 때만 표시하지만 or 연산자는 주어진 조건식 중 어느 하나라도 true 이면 표시하라는 뜻입니다. 그러므로 다음 결과는 현재 페이지가 라벨 검색이거나 모바일 접속이면 “안녕 하보니” 문구를 출력합니다.

<b:if cond='data:blog.isMobileRequest or data:view.isLabelSearch'>
  <h1>안녕 하보니!</h1>
</b:if>

not 또는 ! 연산자는 false 일 때 출력하는 조건식입니다. 그러므로 다음 코드는 모바일이 아니라면 표시하는 코드가 됩니다.

<b:if cond='!data:blog.isMobileRequest'>
  <h1>안녕 하보니!</h1>
</b:if>

not 조건식은 ! 와 같은 조건식이지만 위 코드에서는 사용할 수 없습니다. “not in” 이나 “not contains” 과 같은 Membership 연산자에 사용할 수 있습니다.

<!-- 조건식이 true 일 때  -->
<b:if cond='data:view.search.label in {"foo", "bar", "baz"}'>
  <h1>안녕 하보니!</h1>
</b:if>

<!-- 조건식이 false 일 때 -->
<b:if cond='data:view.search.label not in {"foo", "bar", "baz"}'>
  <h1>안녕 하보니!</h1>
</b:if>

in 은 라벨이 true 일 때 표시하고, not in 이면 피연산자의 값이 반대일 때 표시합니다. 다시 말해 true 가 false 가 되고, false 가 true 가 됩니다. 그러므로 두 번째 조건식은 라벨이 "foo", "bar", "baz" 에 해당하지 않을 때 표시하라는 뜻이 됩니다.

논리 연산자를 이용해 좀 더 복잡한 조건식을 보도록 하죠. 아래 코드는 페이지 종류가 게시물 보기(포스트글)이거나 게시물 목록일 때 표시하는 예제입니다. 

<b:if cond='data:blog.pageType == "item" or data:blog.pageType == "index"'>
  <h1>안녕 하보니!</h1>
</b:if>

다음은 중첩된 조건식입니다.

<b:if cond='data:blog.searchLabel == "foo"
  or (data:blog.pageType == "index" and data:blog.url != data:blog.homepageUrl)'>
  <h1>안녕 하보니!</h1>
</b:if>

이 경우 라벨이 foo 이거나 게시물 목록일 때는 표시되지만 메인 페이지에는 표시하지 않습니다.

0 댓글