%div{:class => [@item.type, @item == @sortcol && [:sort, @sortdir]] } Contents
可以呈现为以下任何一种:
<div class="numeric sort ascending">Contents</div>
<div class="numeric">Contents</div>
<div class="sort descending">Contents</div>
<div>Contents</div>
我真的不了解此代码段的@sortcol && [:sort, @sortdir]
部分。
答案 0 :(得分:3)
这依赖于运算符优先级。所以它的评估如下:
@item == @sortcol
是真还是假。
false
时
&&
返回false
,因为其他部分未经过评估:class => [@item.type]
true
时
&&
返回表达式的第二部分。在这种情况下,数组[:sort, @sortdir]
:class => [@item.type, :sort, @sortdir]
答案 1 :(得分:1)
[@item.type, @item == @sortcol && [:sort, @sortdir]]
=>
# if @item.type is blank, so class is still empty
# if @item.type is "numeric" class is "numeric"
class = @item.type
# if @item equal @sortcol
# class will append "sort" and @sortdir if it is not empty.
if @item == @sortcol
class += "sort"
class += @sortdir
end
仅当@item == @sortcol && [:sort, @sortdir]
为真时,此构造@item == @sortcol
才会返回[:sort,@ sortdir]