Чем отличаются переменные, начинающиеся с @, @@ и $?

Вопрос проверяет понимание различных типов переменных в Ruby и их областей видимости.

Короткий ответ

@ — переменная экземпляра, принадлежащая объекту.

@@ — переменная класса, общая для всех экземпляров класса.

$ — глобальная переменная, доступная из любого места программы.

Длинный ответ

Переменные экземпляра (@):
Сохраняют состояние внутри объекта и не доступны вне объекта напрямую. Они уникальны для каждого экземпляра класса.

class Person  
  def initialize(name)  
    @name = name  
  end  

  def name  
    @name  
  end  
end  

 

Переменные класса (@@):
Хранят общие данные, которые разделяются между всеми экземплярами класса.

class Counter  
  @@count = 0  

  def initialize  
    @@count += 1  
  end  

  def self.count  
    @@count  
  end  
end  

 

Глобальные переменные ($):
Доступны в любом месте программы, но их использование может усложнить отладку и поддержку кода.

$global_var = "I am global"  

 

Используйте переменные экземпляра и класса для управления состоянием, избегайте глобальных переменных.

Уровень

  • Рейтинг:

    3

  • Сложность:

    4

Навыки

  • Ruby

Ключевые слова

Подпишись на Ruby Developer в телеграм