2011-03-02 71 views
0

对不起,如果我可能错过了关于此的文档主题。红宝石双“..”整数与迭代

什么双点意味着对这段代码:

require 'benchmark' 
iterations = 1000000 

b = Benchmark.measure do 
    for i in 1..iterations do 
    x = i 
    end 
end 

c = Benchmark.measure do 
    iterations.times do |i| 
    x = 1 
    end 
end 

puts b 
puts c 

我是新来的Ruby所以请宽容我:P

+0

在Ruby中使用'for'是单向的。 –

+0

另外,x = i vs x = 1在基准测试'for'与'时间'比较时很奇怪。 – steenslag

+0

这只是本书开始Ruby的一个例子:) – yretuta

回答

4

..表示一个Range对象从左边的数字到右边的数字。

>> (1..10).to_a 
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

见:这可以通过将对象转换为Array对象,像这样被最佳地示出?

>> ("a".."j").to_a 
=> ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"] 

Range类包括Enumerable模块这使我们each方法,使我们能够遍历:该对象通过至10

它也适用于连续字母,提供了一系列的从1位数字范围内的每个元素。

产生额外的琐事

...也被用在Ruby中,除了它得到的一切行动,但不包括右边的值。

>> (1...10).to_a 
=> [1, 2, 3, 4, 5, 6, 7, 8, 9] 
2

这是一个范围。 Range课程的文档是here

+0

这甚至不能解释Range是什么。它只显示它的方法。 –

2

..运算符定义了一个可迭代的范围。

(1..5).to_a => [1,2,3,4,5]

为了完整起见,你也有...运营商,这将离开了范围的最后一个元素,如(1...5).to_a => [1,2,3,4]

+0

只是为了正确,我不认为'''在技术上是一个操作员。例如,我认为它是一种语言结构,更类似于小数点。 –

0

从1创造了一系列以迭代

数量

这里有一个简单的例子

>> for i in 1..10 do 
?> puts i 
>> end 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
=> 1..10