Ruby数组范围

5
(2011..1995).to_a 

返回一个数组

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

为什么它不起作用呢?


1
这些语句在我的环境中都返回空数组。Ruby 1.8.7p302版本。 - Eimantas
两者都返回一个空数组,就像Eimantas所说的那样。然而,如果你反转范围中的项目,使1995年排在第一位,它们都会返回预期的数组。范围并不真正意味着向后走。 - Kyle Heironimus
你应该指明你正在使用哪个Ruby版本。 - tokland
(Time.now.year.to_i).downto(1995).to_a - Mahesh
5个回答

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

2

你可以使用这段代码:

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

它可以生成从今年到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 可以工作。结束年份应该大于开始年份。


0

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接