如何在Ruby irb中脱颖而出?

时间:2012-11-06 23:08:58

标签: ruby irb

  

可能重复:
  Is there a way to get out of a “hung” state in IRB?

我正在使用IRB。当我编码时,我发现当行以“/”结尾时,我会“卡住”:

irb(main):057:0/

当发生这种情况时,我无法做任何事情,我无法退出,定义事物等等。它会循环回到以“/”结尾的行。

但是,当一行结束时:

irb(main):056:0>
一切似乎都很好。如果需要,我可以退出,定义任何东西,等等。

当一行以“/”结尾时,如何解开?

3 个答案:

答案 0 :(得分:8)

您可以按 ctrl + c ,然后按 return 返回IRB的提示。

答案 1 :(得分:5)

当您在IRB中“卡住”时,通常是因为无法匹配的结算分隔符,例如单引号与双引号不匹配。

对于这个特定问题,它归因于Regexp对象,其中分隔符是您按下的'/'。这与您没有关闭的公开引用相同。一旦你结束正斜杠以关闭正则表达式,你会发现自己处于下一个提示状态,你将看到光标位置之前的行上的IRB返回。因此,只需关闭分隔符即可。

也许,这只能是一次钓鱼探险,你打算忽略行尾的返回,当你应该使用反斜杠('\')时,你使用正斜杠?

Control-C有点沉重,因为它试图发送一个中断。 Control-D是EOD或数据结尾 * 字符,因此通常会让IRB知道您已完成在线路(或流)上输入数据。

这不仅仅是简单的IRB,可以让你摆脱一些非常困难的地方,而不会终止正在运行的应用程序。允许你有一个优雅的退出,甚至继续运行程序,并纠正你的错误,例如有时在IRB中发生。

Screenshot of situation where missing one of the parenthesis are missing.

当然,如果失败了,那么试试control-c它可能只是很重的,足以让你通过。


* historicallyEOT或“磁带结束”或“传输结束”。将输入与“数据”联系起来可能只是我的助记符。

答案 2 :(得分:2)

这是因为当行以未终止的正则表达式结束时按Enter键。你可以像alex说的那样使用Ctrl + C,或者用另一个斜杠结束它来完成正则表达式(或者,如果你用%{开始正则表达式,用}结束它等等。)< / p>