我有一个由成对的数字和一些值组成的数组:
a = [[2, :foo], [5, :bar], ..., [17, :baz]]
其中可以假设没有两对具有相同的数字,并且这些对按其数字的值排序。基于这个数组a
,我想传递一个数字i
,它总是介于最小和最大数字之间a
,并返回与不超过的最大数字配对的值i
。一些预期的返回值是:
2 # => :foo
4 # => :foo
5 # => :bar
17 # => :baz
做这个的最好方式是什么?使用散列在处理范围作为键时存在问题,并且使用case
语句很难动态采用 to a
。