Теневая внешняя переменная внутри блока в Ruby - PullRequest
0 голосов
/ 12 мая 2019

У меня есть:

variable = 1

И блок, который использует ту же переменную имени:

[*1..10].each do |n|
  ...
  variable = 2
end

Есть ли способ избежать изменения внешней переменной (тень?)

1 Ответ

1 голос
/ 12 мая 2019

Да!Начиная с Ruby 1.9, Ruby представил блочные локальные переменные, на которые любая переменная, начинающаяся с ;, не повлияет.Но это нехорошо, рассмотрите возможность использования другого имени в блоке.

variable = 1
[*1..10].each do |n; variable|
  ...
  variable = 2
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...