У мові програмування 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 буде вважати, що ви посилаєтеся на поточний об’єкт за замовчуванням.