1

Rubyコードを入力するためのより単純なPryプロンプトを構成しようとしています。どういうnest_level意味ですか?Pryのドキュメントには、「3つのパラメーターがプロンプトプロシージャに渡されます。これは、セッションのターゲットであるオブジェクト、現在のネストレベル、および関連付けられた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オブジェクトを「入力」できます。これは、を使用するのと同じです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に戻りましたexitcd ..スコープを終了するために使用することもできます。

于 2012-04-26T20:20:53.467 に答える