Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад

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

Вопрос проверяет понимание различных типов переменных в 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

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

#instance

#class

#global

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