我正在使用IRB。当我编码时,我发现当行以“/
”结尾时,我会“卡住”:
irb(main):057:0/
当发生这种情况时,我无法做任何事情,我无法退出,定义事物等等。它会循环回到以“/
”结尾的行。
但是,当一行结束时:
irb(main):056:0>
一切似乎都很好。如果需要,我可以退出,定义任何东西,等等。
当一行以“/
”结尾时,如何解开?
答案 0 :(得分:8)
您可以按 ctrl + c ,然后按 return 返回IRB的提示。
答案 1 :(得分:5)
当您在IRB中“卡住”时,通常是因为无法匹配的结算分隔符,例如单引号与双引号不匹配。
对于这个特定问题,它归因于Regexp对象,其中分隔符是您按下的'/'。这与您没有关闭的公开引用相同。一旦你结束正斜杠以关闭正则表达式,你会发现自己处于下一个提示状态,你将看到光标位置之前的行上的IRB返回。因此,只需关闭分隔符即可。
也许,这只能是一次钓鱼探险,你打算忽略行尾的返回,当你应该使用反斜杠('\')时,你使用正斜杠?
Control-C有点沉重,因为它试图发送一个中断。 Control-D是EOD
或数据结尾 * 字符,因此通常会让IRB知道您已完成在线路(或流)上输入数据。
这不仅仅是简单的IRB,可以让你摆脱一些非常困难的地方,而不会终止正在运行的应用程序。允许你有一个优雅的退出,甚至继续运行程序,并纠正你的错误,例如有时在IRB中发生。
当然,如果失败了,那么试试control-c
它可能只是很重的,足以让你通过。
* :historically,EOT
或“磁带结束”或“传输结束”。将输入与“数据”联系起来可能只是我的助记符。
答案 2 :(得分:2)
这是因为当行以未终止的正则表达式结束时按Enter键。你可以像alex说的那样使用Ctrl + C,或者用另一个斜杠结束它来完成正则表达式(或者,如果你用%{
开始正则表达式,用}
结束它等等。)< / p>