0
我有一个日期范围,我想“拉回”一个月。优雅地“移动”范围的值
这是我想出来的:
def pull_back range, value
min, max = %i{min max}.map{ |m| range.try(m) - value }
min..max
end
是否还有更好的 “shift_range” 的方法? 是不是重复?
我有一个日期范围,我想“拉回”一个月。优雅地“移动”范围的值
这是我想出来的:
def pull_back range, value
min, max = %i{min max}.map{ |m| range.try(m) - value }
min..max
end
是否还有更好的 “shift_range” 的方法? 是不是重复?
你可以做: -
def pull_back range, value
range.min - value..range.max - value
end
当然是,但我试图避免重复“range。 - value” - 这就是为什么我经历了整个“尝试”的事情:/ 尽管如此,这是我知道的最好的版本,因此我将它标记为答案 – Humza 2014-09-06 13:47:48
是什么的'try'?如果它返回'nil',它不会以任何方式崩溃吗? – sawa 2014-09-06 12:50:31
@sawa OP可能不知道'#send','Method#call'等等等等:-) – 2014-09-06 12:55:28
no no。尝试不是因为“范围”不是一个范围。这只是一种避免类似'范围'的自负方式,就像这样:(range.min - value)..(range.max - value) – Humza 2014-09-06 13:46:05