У меня есть переменная, на которую я устанавливаю значение по умолчанию, а затем выполняю процедуру. Дело в том, что у меня нет доступа к переменной внутри блока, поскольку у блока есть своя собственная переменная и нет доступа к внешней стороне. Вот фрагмент:Рубиновая локальная переменная внутри блока
value = ""
cmd_errors = Array.new
# Call the command line
status = POpen4.popen4(cmd) do |stdout, stderr|
output = stdout.read
error = stderr.read
if (!output.empty?)
value = JSON.parse(output) #This just creates a block scoped variable called 'value' and my local variable is still empty
else
cmd_errors << error
end
end
Можно ли разрешить блоку писать эту локальную переменную? Возможно, используя ссылки?
Вы можете использовать 'p output, error' внутри цикла. Кажется, условие 'if' никогда не становится истинным. –
@tolgap: 'p x' эквивалентно' puts x.inspect', поэтому вы не должны писать 'p value.inspect', так как это то же самое, что' puts x.inspect.inspect', который плохо разбирается в вещах. – Borodin