我正在尝试配置一个更简单的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>
答案 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 ..
退出范围。