3

ターミナル ('irb') でインタラクティブな Ruby シェルを起動すると、irb サブシェルを際限なく開き続けることができます。これのポイントは何ですか?

4

1 に答える 1

7

これまでのところ、irb サブセッションでできる便利なことを 3 つ見てきました。

  1. ローカル変数の未定義
  2. selfirb セッションの変更
  3. irb優れたツールセットの一部です

ローカル変数の未定義

ネストされたirbは、すべてのローカル変数 (クラス、モジュールなどではない) が定義されていない新しいサブセッションを開始します。

irb(main):001:0> a = 1
#=> 1
irb(main):002:0> irb
irb#1(main):001:0> a
  NameError: undefined local variable or method `a' for main:Object from (irb#1):1

selfirbセッションに変更

irb(main):001:0> self
#=> main
irb(main):002:0> irb "Hello World"
irb#1(Hello World):001:0> self
#=> "Hello World"
irb#1(Hello World):002:0> length
#=> 11

注: これは、irb セッションの「バインディングの変更」とも呼ばれます。

ところで、サブセッションを開かずにバインディングを変更することは可能です ( cbirb_change-bindingどちらもあなたのためにそれを行います)。しかし、subsession で古いバインディングに戻る方が便利です。

一番いいのは、これirbは便利なコマンド セットの 1 つにすぎないということです。

  • irb: 新しいサブセッションを開始します
  • jobs: サブセッションのリスト
  • fg: サブセッションに切り替えます
  • kill: サブセッションを終了します

詳細については、この興味深い SO 回答を参照してください。

于 2013-05-03T18:53:21.537 に答える