Truthy and Falsy
When a non-boolean data type is used in a boolean context (such as a conditional tag), Liquid decides whether to evaluate it as true or false. Data types that return true by default are called truthy. Data types that return false by default are called falsy.
Trong lập trình, chúng ta mô tả “Truthy” (đúng) và “falsy” (sai) như bất kì kết quả trả về là đúng hoặc sai tương ứng, khi chúng được sử dụng trong một câu lệnh if
In this article
- Truthy
- Falsy
Truthy
Tất cả các giá trị trong Liquid là “truthy” (đúng), ngoại trừ nil
và false
.
Trong ví dụ dưới đây, chữ “Tobi” không phải là một kiểu boolean, nhưng nó là truthy trong một điều kiện:
{% assign name = "Tobi" %}
{% if name == true %}
This text will always appear if "name" is defined.
{% endif %}
Các chuỗi, kể cả khi rỗng thì vẫn là truthy. Ví dụ dưới đây sẽ cho kết quả tags HTML rỗng nếu settings.fp_heading
là rỗng.
{% if page.title %}
<h1>{{ page.title }}</h1>
{% endif %}
<h1></h1>
Để tránh điều này, bạn có thể kiểm tra xem chuỗi có phải là blank
không, như sau:
{% unless settings.fp_heading == blank %}
<h1>{{ settings.fp_heading }}</h1>
{% endunless %}
Một EmptyDrop cũng là truthy. Trong ví dụ dưới đây, nếu settings.page là một chuỗi rỗng hoặc được thiết lập cho một đối tượng đã bị ẩn hoặc bị xóa, bạn sẽ kết thúc bằng một EmptyDrop. Kết quả là một
For this input:
{% if pages[settings.page] %}
<div>{{ pages[settings.page].content }}</div>
{% endif %}
The output is:
<div></div>
Falsy
Những giá trị duy nhất là falsy trong Liquid là nil
và false
.
nil
là kết quả được trả về khi một đối tượng Liquid không có bất cứ cái gì để trả về. Ví dụ, nếu một bộ sưu tập không có một hình ảnh nào, collection.image sẽ được thiết lập là nil. Từ đó, nó là “falsy”, bạn có thể làm như sau:
{% if collection.image %}
// output collection image
{% endif %}
The value false
is returned through many Liquid object properties such as product.available
.