Почему глобальная переменная не работает в файле .rb, а работает в irb? - PullRequest
0 голосов
/ 25 мая 2018

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

$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 ​​между этими двумя местами?

1 Ответ

0 голосов
/ 25 мая 2018

Я подозреваю, что у вас другое определение log () в вашей среде.Изменение названия вашей программы на что-то другое (скажем, «mylog») проверит эту гипотезу.

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