我需要一种根据当前日期和已使用日期计算可用周数的方法。
我想出了不同的解决方案,但所有这些对于 Ruby 来说似乎都“丑陋”。我知道有更好的方法。
要求:
方法需要 3 个参数
start - Date, to start calculation from
amount - Integer, How many weeks do we want?
used_weeks - Array of already used weeknumbers (optional) Default: nil
假设我们传递这个方法:
calculate_available_weeks (Date.current, 5, [1,3,7])
(为简单起见,假设 Date.current 返回 Sun, 01 Jan 2012)
然后该方法应返回接下来几周的日期:2,4,5,6,8
这是我到目前为止所得到的:
def calculate_week_dates(start, amount, excluded_weeks = nil)
weeks = []
last_checked = start
until weeks.length == amount do
unless excluded_weeks && excluded_weeks.include?(last_checked.cweek)
weeks << last_checked
end
last_checked = last_checked.next_week
end
weeks
end
最佳答案
这就是我喜欢 ruby 的原因。
def calculate(starting_week, amount, excluded_weeks = [])
((starting_week..52).to_a - excluded_weeks).first(amount)
end
puts calculate( 1, 5, [1,3,7]).inspect # => [2, 4, 5, 6, 8]
puts calculate( 5, 5, [1,3,7]).inspect # => [5, 6, 8, 9, 10]
puts calculate(10, 5, [1,3,7]).inspect # => [10, 11, 12, 13, 14]
关于ruby-on-rails - 计算 ruby 中的可用周数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10490154/