我正在尝试填充一个数字,其大小以整数和半数(即10,10.5,11,11.5,12)来衡量。到目前为止,我有:
(10..12).map{ |size| [size, size + 0.5] }.flatten[0...-1]
在Ruby中存在一种更有说服力的方法,而不必扁平化并删除最后一个元素吗?
答案 0 :(得分:14)
我个人的最爱:
>> (10..12).step(0.5).to_a
=> [10.0, 10.5, 11.0, 11.5, 12.0]
答案 1 :(得分:0)
你可以使用lambdas(注意它输出浮点数) - 我会让你决定是否更有说服力。
irb(main):001:0> fn = ->(x, y) { (x*2..y*2).map { |i| i / 2.0 } }
=> #<Proc:0x007fa782b0a4b0@(irb):1 (lambda)>
irb(main):002:0> fn.call(10, 12)
=> [10.0, 10.5, 11.0, 11.5, 12.0]
答案 2 :(得分:0)
我假设您希望返回的数组中的值在Fixnum
和Float
之间交替,如您的示例所示:
(10..12).flat_map { |size| [size, size + 0.5] }.tap { |a| a.pop }
#=> [10, 10.5, 11, 11.5, 12]