来自haml doc
如果指定了单个值并且它 评估为false,忽略它; 否则它会被转换为 串。例如:
.item{:class => @item.is_empty? && "empty"}
可以渲染为:
class="item"
class="item empty"
但这对我没有意义。由于item.is_empty?
被评估为真或假,因此正确的输出应该是......
class="empty"
class="item empty"
答案 0 :(得分:4)
@item.is_empty? && "empty"
此处,如果@item
为空,.is_empty?
会返回true
,因此会评估&&
表达式的右侧操作数。这个表达式的结果是"empty"
如果@item
不为空,.is_empty?
返回false
,则&&
表达式的右侧操作数不已评估,表达式的结果为false
。
所以,你最终将得到以下任何一个:
.item{ :class => "empty" }
.item{ :class => false }
HAML文档所说的是第二种情况(“单个值评估为false”)被忽略,因此可归结为以下任何一种情况:
.item{ :class => "empty" }
.item{ }
这导致以下任何一种:
class="item empty"
class="item"