В яких випадках необхідно використовувати self у Ruby?

У мові програмування Ruby ключове слово self використовується для вказівки на поточний об’єкт, на якому викликається метод. Ось деякі випадки, коли використання self є необхідним:

Доступ до змінних класу або об’єкта

class MyClass
  def initialize(value)
    @value = value
  end

  def print_value
    puts @value
  end

  def print_self_value
    puts self.print_value  # Використання self для визначення, що викликається метод print_value на поточному об'єкті
  end
end

obj = MyClass.new(42)
obj.print_self_value

Звернення до інших методів класу

class MyClass
  def method1
    puts "Method 1"
  end

  def method2
    method1          # Виклик методу method1 без self
    self.method1     # Виклик методу method1 за допомогою self
  end
end

obj = MyClass.new
obj.method2

Звернення до статичних змінних класу

class MyClass
  @@counter = 0

  def initialize
    @@counter += 1
  end

  def self.print_counter
    puts @@counter
  end
end

obj1 = MyClass.new
obj2 = MyClass.new
MyClass.print_counter   # Виклик статичного методу за допомогою self

Визначення статичних методів

class MyClass
  def self.static_method
    puts "This is a static method."
  end
end

MyClass.static_method  # Виклик статичного методу за допомогою класу

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

1 Вподобання