范围循环打印范围?
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
当我尝试遍历星期几时,输出似乎只是范围的开始日期和结束日期,而不是我要打印的日期名称。
我这样做是因为每天要打印的内容较多。这是我的模型中的内容:
(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