nest_level在Pry的提示配置中意味着什么?

时间:2012-04-26 19:14:46

标签: ruby prompt irb read-eval-print-loop pry

我正在尝试配置一个更简单的Pry提示输入Ruby代码。 nest_level是什么意思? Pry文档说:“三个参数被传递到提示过程中,作为会话目标的对象,当前的嵌套级别,以及对相关Pry实例的引用。如果需要,可以在提示中使用这些对象“。他们的例子是:

Pry.config.prompt = proc { |obj, nest_level, _| "#{obj}:#{nest_level}> " }

但是,nest_level似乎不是我认为的那样:

main:0> if true
main:0>   if true
main:0>     while true
main:0>       puts 1
main:0>       break
main:0>     end  
main:0>   end  
main:0> end  
1
=> nil
main:0> 

1 个答案:

答案 0 :(得分:3)

嵌套级别是指范围。在pry中,您可以使用cd命令“输入”对象,这类似于使用instance_eval - 允许您使用所述对象的方法,而不使用对象的名称作为前缀。例如(使用相同的提示proc):

main:0> arr=[1,2,3]
=> [1, 2, 3]
main:0> cd arr
[1, 2, 3]:1> first
=> 1
[1, 2, 3]:1> last
=> 3
[1, 2, 3]:1> count
=> 3
[1, 2, 3]:1> exit
=> [1, 2, 3]
main:0> 

我已cd加入数组,并调用它的方法,而不用arr.作为前缀。当cd加入时,嵌套级别更改为1,当我exit时,嵌套级别更改为0。我也可以使用cd ..退出范围。