Labels

Blogger Code - b:switch


Ngoài rẽ nhánh dạng if else, trong các ngôn ngữ lập trình thường sử dụng một loại rẽ nhánh khác đó là switch case. Trong bài này chúng ta sẽ học cách sử dụng rẽ nhánh switch case với mã nguồn blog

b:switch / b:case / b:default tương tự như b:if / b:elseif / b:else.

Cấu trúc như sau

<b:switch var='EXPRESSION'>

  <b:case value='VALUE1'/>

    <!-- Khối lệnh cho giá trị VALUE1 == true -->

  <b:case value='VALUE2'/>

    <!-- Khối lệnh cho giá trị VALUE2 == true -->

  <b:default/>

    <!-- Khối lệnh cho các trường hợp còn lại -->

</b:switch>

+ <b:switch>, <b:case> và <b:default> hoạt động trong mọi mã XML trừ b:skin
+ <b:case>, <b:default> bắt buộc phải có <b:switch> đi kèm
+ <b:case> bắt buộc, <b:default> không bắt buộc
+ <b:case> có thể sử dụng nhiều lần trong 1 <b:switch>
+ <b:default> chỉ được sử dụng 1 lần, trong trường hợp xuất hiện cả <b:switch>, <b:case> và <b:default> thì <b:default> phải là ngoại lệ cuối cùng
+ Khi sử dụng <b:default> thì <b:switch>, <b:case> bắt buộc phải có thuộc tính ví dụ

<b:switch var='EXPRESSION'>
  <b:case value='VALUE'/>
  
  <b:default/>
  
</b:switch>

Ví dụ 

Sử dụng với dữ liệu boolean

<b:switch var='data:view.isPost'>
  <b:case value='true'/>
    <!-- Khối lệnh nếu data:view.isPost == true  -->
  <b:default/>
    <!-- Khối lệnh cho trường hợp còn lại tức data:view.isPost == false -->
</b:switch>

Với dữ liệu dạng string

<b:switch var='data:view.type'>
  <b:case value='item'/>
    <!-- Khối lệnh cho data:view.type == "item" -->
  <b:case value='feed'/>
    <!-- Khối lệnh cho data:view.type == "feed" -->
  <b:default/>
    <!-- Các trường hợp còn lại -->
</b:switch>

Sử dụng với biểu thức

<b:switch var='data:posts.length + 10'>
  <b:case value='0'/>
    <!-- Khối lệnh cho giá trị biểu thức = 0 -->
  <b:case expr:value='10 - 1'/>
    <!-- Khối lệnh cho giá trị biểu thức = kết quả phép tính 10 - 1  -->
  <b:default/>
    <!-- Các trường hợp còn lại -->
</b:switch>

Như vậy b:switch thích hợp cho trường hợp bài toán có nhiều rẽ nhánh với phép so sánh tương đồng. sử dụng b:switch cũng giúp code gọn nhẹ, dễ hiểu hơn

Chúc bạn học tốt !