Я дивився, що в 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]