【发布时间】:2015-09-25 08:30:56
【问题描述】:
如何对这个数组进行排序,以便所有带有 optional = true 的哈希都排在最后?
my_array = [
{ name: "foo", optional: true },
{ name: "pop" },
{ name: "boop", optional: true },
{ name: "pop", optional: false }
]
我试过了:
my_array.sort { |a,b| a['optional'] <=> b['optional'] }
但我收到此错误:
comparison of Hash with Hash failed
错误令人惊讶,因为执行 ['optional'] 将返回值 true、false 或 nil。
注意:
我知道这个解决方案.sort_by { |a| (a['optional'] ? 1 : 0) }。我特别想了解sort方法。
【问题讨论】: