Про метод send в Ruby

У Ruby метод send - це спеціальний метод, який дозволяє викликати інші методи об’єкту за їхніми іменами, які можуть бути визначені під час виконання програми. Це динамічний спосіб виклику методів, оскільки ім’я методу передається як рядок або символ.

Основним синтаксисом методу send є:

object.send(:method_name, *args)

де:

  • object - об’єкт, для якого потрібно викликати метод.
  • :method_name - ім’я методу, який потрібно викликати. Це може бути символ або рядок.
  • *args - параметри, які будуть передані методу, якщо він має їх приймати.

Приклад:

class MyClass
  def add(a, b)
    a + b
  end
end

obj = MyClass.new
puts obj.send(:add, 2, 3)  # Виведе: 5

Тут метод add викликається за допомогою send з аргументами 2 і 3, що додається до результату 5.

Метод send може бути дуже корисним у деяких ситуаціях, зокрема при динамічному виклику методів на основі умов або конфігурації. Але слід бути обережним з його використанням, оскільки він дозволяє викликати будь-який метод об’єкту, навіть приватні, що може призвести до непередбачуваної поведінки програми.

PS використання методу send у Ruby - один із способів метапрограмування.