我有一种方法可以在下面打印我的卡片。我想创建一种方法,以降序打印卡。我将不得不创建一个新方法。我已经尝试了几件事,但是我在这里。
def print_cards
cards.all.each.with_index(1) do |card, index|
puts "#{index}. #{card.name}"
end
end
答案 0 :(得分:1)
您应该使用Ruby的Enumerable模块的sort_by方法。
基本思想是您提供一个块,该块将枚举中的每个值映射为可用于对集合进行排序的数值。
例如,如果您有一个字符串集合,并且想要按长度对它们进行排序,则可以使用类似这样的方式,其中集合中的每个项目都映射为其大小/长度。第一个示例以升序对数组进行排序,第二个示例以降序对数组进行排序。
my_array = ["a", "aa", "aaaa", "aaa"]
puts my_array.sort_by { |item| item.size }
puts my_array.sort_by { |item| -item.size }