5

重複の可能性:
IRBの「ハング」状態から抜け出す方法はありますか?

私はIRBを使用しています。コーディングしているときに、行が「」で終わると「スタック」することに気づきました/

irb(main):057:0/

それが起こったとき、私は何もできず、終了したり、物事を定義したりすることができません。それは「/」で終わる行にループバックし続けます。

しかし、行が次のように終了する場合:

irb(main):056:0>

すべてが正常に機能しているようです。必要に応じて終了したり、何かを定義したりできます。

行が「」で終わっている場合、どうすればスタックを解除でき/ますか?

4

3 に答える 3

8

ctrl+を押してから、IRBのプロンプトに戻ることができcますreturn

于 2012-11-06T23:11:47.490 に答える
5

IRBで「スタック」している場合は、通常、一重引用符が二重引用符と一致しないなど、一致しない終了区切り文字が原因です。

この特定の質問の場合、それはRegexpオブジェクト内にあるためです。このオブジェクトの区切り文字は、押した「/」です。これは、クローズしないオープンクォートを持つことと動作が同じです。スラッシュを終了して正規表現を閉じるとすぐに、次のプロンプトが表示され、カーソル位置の前の行にIRBからの戻りが表示されます。したがって、区切り文字を単に閉じるのが適切です。

おそらく、これは釣りの遠征にすぎないので、代わりに行末のリターンを無視するつもりでした。バックスラッシュ('\')を使用する必要がある場合は、スラッシュを使用しましたか?

Control-Cは、割り込みを送信しようとするため、一種の手間がかかります。Control-Dは、EODまたはEnd of Data *文字であるため、通常、行(またはストリーム)へのデータの入力が完了したことをIRBに通知します。

これは単なるIRB以上の効果があり、実行中のアプリケーションを終了することなく、かなり困難な場所から抜け出すことができます。正常に終了したり、プログラムの実行を継続したり、IRBで時々発生するような間違いを修正したりできるようにします。

括弧の1つが欠落している状況のスクリーンショット。

もちろん、それが失敗した場合は、試しcontrol-cてみてください。


*歴史的に、EOTまたは「テープの終わり」または「伝送の終わり」。入力のストリームのように、それを「データ」に関連付けることは、単に私のニーモニックかもしれません。

于 2012-11-07T00:20:21.003 に答える
2

これは、行が終了していない正規表現で終了しているときにEnterキーを押すことが原因です。アレックスが言ったようにCtrl+Cを使用するか、別のスラッシュで終了して正規表現を完成させることができます(または、正規表現をで開始した場合は%{、で終了します})。

于 2012-11-07T00:12:04.443 に答える