我试图根据块的深度添加缩进。我使用全局变量来记录块的深度。
$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代码有什么区别?
答案 0 :(得分:1)
我怀疑你的环境中有不同的log()定义。将例程的名称更改为其他名称(例如' mylog')将测试此假设。