Я пытался добавить отступ, основываясь на глубине блока.Я использовал глобальную переменную для записи глубины блока.
$depth = 0
def log(des, &block)
indentation = " " * $depth
$depth += 1
puts "#{indentation}Begginning the #{des} block"
puts "#{indentation}Finished #{des} and returned: #{block.call}"
$depth -= 1
end
log "outer block" do
log "second level block" do
log "third level block" do
"I am number 3"
end
"I am number 2"
end
"I am out most!"
end
В терминале, который я пробовал несколько раз ruby file_name.rb
, он не показывал отступ, он даже не выводил puts
глобальную переменную.После этого я копирую код в irb
, и он работает.
Почему это произошло?
Какая разница при запуске кода ruby между этими двумя местами?