我試圖實現我的第一個紅寶石排序算法。該算法基於一些特定的規則(「總是首選類型爲xxx的對象,而不是類型爲yyy的對象」),如果這些規則都未觸發,則使用ruby < => - 運算符。我在ruby-on-rails一對多關聯中這樣做。Ruby自定義排序返回-1而不是數組
問題是,這algortihm不返回數組本身,它只是返回-1或1,比較的結果..但我實際上不明白爲什麼,因爲我的結果只返回排序 - 塊。
這裏是我當前的代碼:
def sort_products!
products.sort! do |p1, p2|
result = 0
# Scalable Products are always the last ones in order
if p1.class.name == "ScalableProduct"
result = -1
elsif p2.class.name == "ScalableProduct"
result = 1
end
if result == 0
# Put products producing electricity and heating down
if p1.can_deliver_electricity?
result = -1
elsif p2.can_deliver_electricity?
result = 1
end
end
# Else: Just compare names
result = p1.name <=> p2.name if result == 0
result
end
end
你可以顯示調用該方法的代碼嗎? –
plz打印出sort_products中的產品數組!方法調用排序之前!方法。 – nickcen