Ruby Double ".." на целых числах с итерациями - PullRequest
0 голосов
/ 03 марта 2011

Извините, если я пропустил тему документации по этому вопросу.

Что означает двойная точка на этом куске кода:

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

Ответы [ 4 ]

4 голосов
/ 03 марта 2011

.. указывает на объект Range, идущий от числа слева к числу справа. Это может быть лучше всего показано путем преобразования объекта в объект Array, например:

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

См? Этот объект предоставляет диапазон цифр от 1 до 10.

Также работает для последовательных букв:

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

Класс Range включает в себя модуль Enumerable, который дает нам метод each, позволяющий выполнять итерации по каждому элементу в диапазоне.

Дополнительные мелочи :

... также используется в Ruby, за исключением того, что он получает все до, но не включая значение справа.

>> (1...10).to_a
=> [1, 2, 3, 4, 5, 6, 7, 8, 9] 
2 голосов
/ 03 марта 2011

.. оператор определяет диапазон, который вы можете перебирать.

Нравится (1..5).to_a => [1,2,3,4,5]

Для полноты картины у вас также есть оператор ..., который пропустит последний элемент диапазона, как (1...5).to_a => [1,2,3,4]

2 голосов
/ 03 марта 2011

Это диапазон.Документация для Range класса здесь .

0 голосов
/ 03 марта 2011

Создает диапазон от 1 до количества итераций

вот краткий пример

>> for i in 1..10 do
?>   puts i
>> end
1
2
3
4
5
6
7
8
9
10
=> 1..10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...