范围循环打印范围?

Range loop printing out the range?

当我尝试遍历星期几时,输出似乎只是范围的开始日期和结束日期,而不是我要打印的日期名称。

我这样做是因为每天要打印的内容较多。这是我的模型中的内容:

(Date.today.beginning_of_week..Date.today.end_of_week).each do |day|
    day.strftime("%A")
end

我不知道为什么我看到的是这个:

2015-10-05..2015-10-11

如果有人能阐明这一点,我将不胜感激。

我不知道你是如何打印结果的,但是如果你在你引用的整个代码上有 puts,那么它将打印 each 的接收者(日期范围;你现在拥有的)。如果要打印块内的内容,请将 puts 放入块内。

(Date.today.beginning_of_week..Date.today.end_of_week).each do |day|
  puts day.strftime("%A")
end

您期望它 return 一个数组,但它只是 return 原始 Range 对象:

(Date.today.beginning_of_week..Date.today.end_of_week)

因为它是用 :each 调用的。您可以使用 :map 代替:

(Date.today.beginning_of_week..Date.today.end_of_week).map {|date| date}

但是如果您不需要在枚举日期时转换日期,您可以简单地使用 :to_a:

(Date.today.beginning_of_week..Date.today.end_of_week).to_a