1

我正在尝试为输入 Ruby 代码配置一个更简单的 Pry 提示。是什么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> 
4

1 回答 1

3

嵌套级别是指范围。在pry中,您可以使用cd命令“输入”对象,这就像 using instance_eval- 允许您使用所述对象的方法,而不用在它们前面加上对象的名称。例如(使用您使用的相同提示过程):

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.. 当我编辑它时嵌套级别更改为1,当我cd编辑时又回到0 exit。我也可以cd ..用来退出范围。

于 2012-04-26T20:20:53.467 回答