Вопрос проверяет знание различных типов переменных и их областей видимости в Ruby.
В Ruby есть четыре типа переменных:
- Локальные (local_variable) — видны только внутри блока, метода или класса.
- Переменные экземпляра (@instance_variable) — принадлежат конкретному объекту.
- Переменные класса (@@class_variable) — делятся между всеми экземплярами класса.
- Глобальные ($global_variable) — доступны из любого места программы.
Переменные в Ruby различаются по области видимости:
- Локальные переменные: начинаются с маленькой буквы или _, доступны только внутри метода или блока, где они определены.
def example
x = 10
puts x
end
example # => 10
- Переменные экземпляра: начинаются с @, принадлежат объекту и сохраняют свое значение между вызовами методов объекта.
class Person
def initialize(name)
@name = name
end
def name
@name
end
end
person = Person.new("John")
puts person.name # => John
- Переменные класса: начинаются с @@, используются для хранения данных, общих для всех экземпляров класса.
class Counter
@@count = 0
def initialize
@@count += 1
end
def self.count
@@count
end
end
Counter.new
Counter.new
puts Counter.count # => 2
- Глобальные переменные: начинаются с $, доступны из любой части программы, но их использование не рекомендуется из-за сложности отладки.
$global_variable = "I am global"
def example
puts $global_variable
end
example # => I am global
Вывод: Выбор типа переменной зависит от области видимости и контекста использования.