Переменные экземпляра и класса в Ruby
НАВИГАЦИЯ ПО СТРАНИЦЕ
В Ruby переменные экземпляра и класса используются для хранения информации в объектах и классах соответственно. Они обеспечивают уровень инкапсуляции и позволяют хранить данные, связанные с конкретным объектом или с самим классом.
Переменные Экземпляра
Переменные экземпляра используются для хранения состояния объекта. Они начинаются с символа @ и могут быть доступны внутри всех методов объекта. Пример:
class Person
def initialize(name, age)
@name = name
@age = age
end
def print_info
puts "Имя: #{@name}, Возраст: #{@age}"
end
end
person = Person.new("John", 25)
person.print_info # Выводит: Имя: John, Возраст: 25
В этом примере @name и @age — это переменные экземпляра, которые принадлежат каждому экземпляру класса Person.
Переменные Класса
Переменные класса используются для хранения данных, связанных с самим классом, а не с его экземплярами. Они начинаются с символа @@. Пример:
class Dog
@@total_dogs = 0
def initialize(name)
@name = name
@@total_dogs += 1
end
def self.total_dogs
@@total_dogs
end
end
dog1 = Dog.new("Buddy")
dog2 = Dog.new("Max")
puts Dog.total_dogs # Выводит: 2
В этом примере @@total_dogs — это переменная класса, которая отслеживает общее количество созданных экземпляров класса Dog.
Различие между Переменными Экземпляра и Переменными Класса
Переменные Экземпляра:
Принадлежат конкретному экземпляру класса.
Разные экземпляры класса могут иметь разные значения для переменных экземпляра.
Переменные Класса:
Принадлежат всему классу, а не его экземплярам.
Общие значения для всех экземпляров данного класса.
Использование переменных экземпляра и класса в Ruby обеспечивает механизм инкапсуляции данных в объектах и классах. Переменные экземпляра хранят состояние каждого объекта, а переменные класса позволяют хранить общие данные для всех экземпляров класса.