2012-04-26 19 views
1

我試圖配置一個更簡單的Pry提示輸入Ruby代碼。 nest_level是什麼意思? Pry文檔說:「將三個參數傳遞給提示過程,作爲會話目標的對象,當前嵌套層次以及對相關Pry實例的引用。如果需要,可以在提示中使用這些對象「。他們的例子是:在Pry的提示配置中nest_level是什麼意思?

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> 

回答

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.前綴他們。當我編入時,嵌套等級變爲1,並且當我編輯exit時,嵌套等級變回0。我也可以使用cd ..退出範圍。

+0

現在有道理!謝謝 – 2012-04-27 16:43:43