繁体   English   中英

如何返回并修复IRB中的语法?

[英]How to go back and fix syntax in IRB?

每当我不小心在IRB中键入错误的语法时,我就永远不会回过头来对其进行修复,并且它会不断提供新的命令行。

例如:

1.9.3p194 :035> justin.find{|key,value|key=='phone_number
1.9.3p194 :036> justin.find{|key,value|key=='phone_number'}
1.9.3p194 :037>
1.9.3p194 :038>
1.9.3p194 :039>

在示例中在行:036上看到的语法错误后,它不执行该方法。

每个人都指出了原因,没有人回答这个问题。

使用Control + C结束错误的行。

当然,如果不执行,则会出错。

换行后,可以使用向上键在历史记录中对其进行编辑。

顺便说一句,奇怪的是,您的irb不会以任何方式告知您的行尚未执行:

如您所见,我的irb提示特殊字符结束命令(可能如果我有多个括号/引号等,它将指向第一个):

irb(main):001:0> justin.find{|key,value|key=='phone_number
irb(main):002:1' ^C

   (Up Key)

irb(main):002:0> justin.find{|key,value|key=='phone_number'
irb(main):003:1>

Windows版本(ruby 1.9.3p327(2012-11-10)[i386-mingw32]我从事的工作:()但我确定我在Gentoo和Suse中得到了类似的东西

编辑:

从右边的相关文章。 您可以选择更好的提示传递

irb-提示inf-ruby

如何获得“ irb(main):001:0>”提示而不是“ >>”

忽略此答案中Stack Overflow的语法突出显示。 这是误导。

线

justin.find{|key,value|key=='phone_number

包含多行字符串的开头,该字符串以phone_number开头。 既然尚未完成,请输入第二个' -IRB会礼貌地等待您完成字符串。 进入

justin.find{|key,value|key=='phone_number'}

因为第二行完成了您开始的字符串,因此输入了方法调用或局部变量phone_number ,然后phone_number又添加了另一个字符串的开头,现在以}开头。 此时,IRB看到的代码看起来像

justin.find{|key,value|key=="phone_number\njustin.find{|key,value|key=="phone_number'}

由于尚未终止最后一个字符串,因此它尚未完成,因此IRB等待更多输入。

每个后续

justin.find{|key,value|key=='phone_number'}

使您停留在此循环中。

Ruby不会打扰您,并会告诉您语法错误。 原因是IRB以每条线路为基础¹,而您在技术上还没有完成。 确实,表达式中的字符串中包含换行符,但是代码中没有换行符会导致表达式终止。

现在,我希望您的问题的答案是显而易见的。 为了使IRB走出循环,请输入

'

¹ 每次表达会更精确,但在此答案的范围内每行令人满意。

行号后有撇号:

1.8.6 :200 > justin.find{|key,value|key=='phone_number
1.8.6 :201'> 

看看是否可以配置提示,以便您在继续声明的情况下获得有关IRB期望的线索。 另请参见“如果/除非”等的类是什么

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM