布尔表达式
编程过程中,我们把返回true
或false
的表达式,统称为布尔表达式。这些表达式,通常跟在if
或unless
等分支语法后面。
哪些情况下返回true
?
除了nil
和false
以外,其他所有的值返回都是true
。
在如下示例中,虽然test
变量不是布尔类型,但在if
语句的返回为true
:
{% assign test = '测试' %}
{% if test %}
看到这个说明返回是true。
{% endif %}
String(字符串),就算是空字符串,在布尔表达式中,仍然返回true
。
例如,在没设置关店说明时,shop.close_desc
是空字符串:
输入:
{% if shop.close_desc %}
<h1>{{ shop.close_desc }}</h1>
{% endif %}
输出:
<h1></h1>
如果想检测字符串是否为空,可以使用blank
对比:
{% unless shop.close_desc == blank %}
<h1>{{ shop.close_desc }}</h1>
{% endunless %}
哪些情况下返回false
?
只有当值为nil
或false
时,才会返回false
。
当指定主题对象没有值可返回时,就会返回nil
。例如,当新增的商品,没有设置橱窗图片时,product.feature_image
会返回nil
,在布尔表达式中就会返回false
:
{% if product.feature_image %}
<!-- 输出橱窗图片 -->
{% endif %}
在主题对象中,有很多布尔类型的属性,都可能返回false
。
例如product.available
,当返回false
时,说明此商品不可出售。
总结
返回true | 返回false | |
---|---|---|
true | √ | |
false | √ | |
nil | √ | |
string | √ | |
string(为空时) | √ | |
0 | √ | |
1或2或3.14 | √ | |
array | √ | |
array(为空时) | √ |