ПРИМЕЧАНИЕ: Миша Сплат на GitHub имеет множество интересных интерактивных примеров * в действии.
По поиску, я обнаружил, чтоОдин из способов перебора диапазона чисел в Ruby (ваш классический стиль для цикла C)
for (i = first; i <= last; i++) {
whatever(i);
}
- сделать что-то вроде этого
[*first..last].each do |i|
whatever i
end
Но что именно происходитс этим [*first..last]
синтаксисом?Я поигрался с irb
и вижу это:
ruby-1.9.2-p180 :001 > 0..5
=> 0..5
ruby-1.9.2-p180 :002 > [0..5]
=> [0..5]
ruby-1.9.2-p180 :003 > [*0..5]
=> [0, 1, 2, 3, 4, 5]
ruby-1.9.2-p180 :004 > *0..5
SyntaxError: (irb):4: syntax error, unexpected tDOT2, expecting tCOLON2 or '[' or '.'
*0..5
^
Все, что я читал в Интернете, рассматривает унарную звездочку как полезную для раскрытия и свертывания аргументов, передаваемых методу, полезную для списков аргументов переменной длины
def foo(*bar)
bar
end
foo 'tater' # => ["tater"]
foo 'tater', 'tot' # => ["tater", "tot"]
и я это понимаю, но я не понимаю, как это применимо к выполнению расширения в моем примере блока выше.
Чтобы было ясно, я знаю, что Ruby Wayэто перебирать массив или коллекцию, не использовать длину массива и перебирать с целочисленным индексом.Однако в этом примере я действительно имею дело со списком целых чисел.:)