присвоение переменных в блоках Ruby для более широкой области видимости - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь использовать повторяемый драгоценный камень.

У меня есть функция, которая возвращает значение, заключенное в повторяемый блок, как показано ниже.

Retriable.retriable do
    x = some_function(1, 2)
end

....do something with x...

Единственный способ, которым я 'мы выяснили, как это сделать, используя глобальную переменную, т. е. @x внутри блока, но я не думаю, что это обязательно лучший способ.Я был бы признателен, если бы кто-то указал мне на лучший способ сделать это.

Спасибо

Ответы [ 3 ]

0 голосов
/ 26 октября 2018

Вы должны иметь возможность присвоить значение новой переменной, независимо от того, что блок возвращает так:

x = Retriable.retriable do
  some_function(1, 2)
end
0 голосов
/ 26 октября 2018

В общем случае вы решаете эту проблему, объявляя переменную вне цикла:

x = nil

%w[foo bar baz].each do |word|
  x = word
end

puts x # => "baz"

Смотрите это в действии здесь: https://repl.it/@jrunning/AbsoluteShamelessVerification

0 голосов
/ 26 октября 2018

Этот конкретный случай может быть решен так:

x = Retriable.retriable do
  some_function(1, 2)
end

Но, в общем, нет, вы не можете объявлять переменные во внешних областях.Вот почему у нас есть областей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...