2011-04-08 44 views
0

我是Ruby新手,无法谷歌这个简单的问题:如何在Ruby中创建列表?

在Ruby中获取数字列表[1, 2, ..., n]的正常方式是什么?在Haskell中,我只输入[1..n],我相信这在Ruby中也很容易,但我无法猜测它。

回答

14

1..n是Ruby中的Range。您可以使用(1..n).to_a或更短的格式[*1..n]将其转换为数组。

根据你在做什么,直接使用范围可能会更有效。

+0

+1' [* 1..N]'。你有链接解释了为什么它的作品?我一直在寻找,而且'&'也有一段时间了,但我根本找不到这些功能的描述。 – 2011-04-08 16:19:06

+0

它被称为Splat操作符。更多信息:http://theplana.wordpress.com/2007/03/03/ruby-idioms-the-splat-operator/和http://stackoverflow.com/questions/776462/where-is-it-legal-易于使用 - 红宝石图示运营商 – Dogbert 2011-04-08 16:31:05

3

Ruby有特殊范围的对象,写成1..10或其他什么。对于许多目的,你可以使用其中的一个而不是一个数组。如果您需要阵列,请调用范围对象的方法:

(1..10).to_a 
1

另一种方法是

1.upto(9).to_a 

漂亮的本身枯燥,但你也可以做

1.step(10, 3).to_a #=> [1, 4, 7, 10]