如何在 Ruby 中根据数字的接近程度使用 sort_by?

wbn*_*nns 1 ruby arrays sorting

我正在尝试编写一个方法,按接近十的顺序对数字数组进行排序:

def test_sort_by_proximity_to_ten                                         
  prices = [3.02, 9.91, 17.9, 10.01, 11.0]
  sorted = prices.sort_by do |p|                                        
    # Not sure how to sort by proximity here
  end                             
  assert_equal [10.01, 9.91, 11.0, 3.02, 17.9], sorted
end
Run Code Online (Sandbox Code Playgroud)

我在想也许我可以使用某种范围,但我的尝试远远不够。

有什么建议吗?

ndn*_*kov 5

prices.sort_by { |price| (10 - price).abs }
Run Code Online (Sandbox Code Playgroud)