2011-02-09 131 views
4
(2011..1995).to_a 

返回一个数组红宝石阵列范围

(Time.now.year.to_i..1995).to_a 

没有。为什么?

+1

这些语句都返回空数组我。红宝石1.8.7p302 – Eimantas 2011-02-09 13:55:29

+0

这两个返回一个空阵列,正如Eimantas所说。但是,如果您将范围内的项目颠倒过来以便1995年是第一次,那么它们都会返回预期的数组。范围并不意味着倒退。 – 2011-02-09 14:44:38

回答

12

尝试

> 2011.downto(1995).to_a 
=> [2011, 2010, 2009, 2008, 2007, 2006, 2005, 2004, 2003, 2002, 2001, 2000, 1999, 1998, 1997, 1996, 1995] 
0

我没有看到任何工作。这是在WinXP上的irb ...

irb(main):009:0> (2011..1995).to_a 
=> [] 
irb(main):010:0> (Time.now.year.to_i..1995).to_a 
=> [] 
irb(main):011:0> 
0

(1995..Time.now.year.to_i).to_a works。最终应该大于开始。

0

我不能复制您的结果。这两个表达式都返回一个数组。

当然,由于这两个范围都是空的,表达式将始终返回一个空数组,但这与您的问题无关。

2

您可以使用此

(Time.now.year.to_i).downto(1995).to_a