[英]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
忽略此答案中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.