Ключове слово self в Ruby використовується для посилання на поточний об’єкт чи контекст, в якому код виконується. Його використання залежить від контексту, у якому воно використовується: в методі класу, звичайному методі або блоку коду.
В методі класу.
В методах класу ключове слово self
вказує на сам клас, на якому вони визначені. Це дозволяє визначати статичні методи або методи класу.
Приклад виклику статичного методу за допомогою класу
class MyClass
def self.my_method
puts "Це статичний метод класу"
end
end
MyClass.my_method
В звичайних методах
У звичайних методах ключове слово self
вказує на поточний об’єкт класу, коли метод викликається на екземплярі цього класу.
class Bird
def initialize(name_bird)
@name_bird = name_bird
end
def name_bird
@name_bird
end
def change_name_bird(new_name_bird)
self.name_bird
@name_bird = new_name_bird
self.name_bird
end
end
one_bird = Bird.new('Воробэй')
one_bird.change_name_bird('Горобець')
puts "Ця пташка - #{one_bird.name_bird}"
В блоках коду
У блоках коду self
вказує на область, в якій вони викликаються. У більшості випадків це буде об’єкт, на якому викликається блок.
class MyClass
attr_accessor :value
def initialize(value)
@value = value
end
def my_block
yield
end
end
obj = MyClass.new(10)
obj.my_block { puts "Значення об'єкта: #{self.value}" }
В середині модулю. В модулі self
також вказує на модуль, і його можна використовувати, наприклад, для визначення методів модулю.
module MyModule
def self.module_method
puts "This is a module method"
end
end
MyModule.module_method
Отже, self
в Ruby допомагає звертатися до поточного контексту: це може бути клас, екземпляр класу чи в блоках коду. Його використання допомагає уникнути конфліктів і дозволяє чітко вказувати, на що саме посилається об’єкт у конкретному місці коду.