Практическое правило заключается в том, что не нужно создавать переменные экземпляра и использовать локальные переменные , если только переменная не будет использоваться повторно в другом методе (который в настоящее время считается не лучшим решением).
В любом случае, если ваш код собирается повторно использовать переменную, это переменная экземпляра, поскольку локальные переменные будут собираться мусором после того, как метод вернет , а недоступны извнеобщей области действия .
При этом работает следующий код:
class Foo
def initialize
@bar = 42
end
def calc
@bar / 2
end
end
Foo.new.calc
, в то время как следующий код поднимается:
class Foo
def initialize
bar = 42
end
def calc
bar / 2
end
end
Foo.new.calc
Он имеет оченьмало, если вообще не влияет на потребление памяти.Переменные экземпляра никогда не являются узким местом (если, конечно, это не гигабайты), и сборка мусора не обещается сразу же после того, как область действия была оставлена и для локальных переменных.