Является ли переменная экземпляра? переменная класса?
Нет, это локальная переменная внутри области действия class ... end
.
как бы я получил доступ к б вне класса?
Вы бы не стали. Он выходит из области видимости (и, следовательно, недоступен), как только достигает end
.
Используется ли он для метапрограммирования?
Это может быть. Пример:
class A
b = [1,2,3]
b.each do |i|
define_method("foo#{i}") do end
end
end
Теперь я определил методы foo1, foo2 и foo3.
Конечно, все было бы иначе, если бы я не создал переменную b и просто сделал [1,2,3].each
напрямую. Таким образом, создание локальной переменной само по себе ничего не дает, оно позволяет писать более чистый код (так же, как использование локальных переменных в методе).