/ / Що під Array.new (10, &: далі) у рубіні [дублікат] - масиви, рубіни

Що знаходиться під Array.new (10, &: наступний) в ruby ​​[дублікат] - масиви, рубіни

Я дивився, що в Ruby існує багато способів оголошення об’єктів масивів на кшталт:

[1,2,3]
Array.new(3){|i| i+1}

Навіть із більш складними способами, як-от:

Array.new(3, &1.method(:+))

Де &1.method(:+) означає, що об’єкт 1 (посилання за значенням) єреагуючи на метод +, на який безпосередньо посилаються, тому кожен раз (у цьому випадку 3 рази) масив виконує блок, збільшуючи об'єкт на 1. Я буду вдячний за будь-яку корекцію, якщо я помиляюся у своєму аналізі.

Отже, переходячи до цього, є такий випадок, який я не зовсім слідую:

Array.new(3, &:next)

Питання в тому, що:

Що таке? & робити в цьому випадку? Я можу здогадатися, що це посилання на якесь значення безпосередньо, але я не знаю, яке саме. А після цього &, як :next діє в цьому випадку.

Заздалегідь я дуже вдячний за вашу допомогу. Я розумію Рубі, і мені це подобається ще більше!

Відповіді:

0 для відповіді № 1

& це ярлик для Symbol#to_proc в цьому випадку. Відповідна повна версія:

Array.new(3) { |i| i.next }
#=> [1, 2, 3]

Приклад нижче може допомогти вам зрозуміти, як це працює:

Array.new(3, &(:next.to_proc))
#=> [1, 2, 3]