irb不打印任何东西

时间:2012-10-25 05:37:13

标签: ruby

我是红宝石的新手 当我使用irb时,会发生一些事情。(没有打印) 有没有人对此有任何建议?
我甚至不知道哪种搜索关键字可以适用于这种情况 (也许是一个特定于环境的问题?你怎么看?)

irb(main):010:0> a = [3,2,1]
=> [3, 2, 1]
irb(main):011:0> a.each
=> #<Enumerable::Enumerator:0x7f413a20d668>
irb(main):012:0> a.each{|x| print x}
321=> [3, 2, 1]
irb(main):013:0> a.each do |x| print x end
321=> [3, 2, 1]
irb(main):014:0> 1.to 9
NoMethodError: undefined method `to' for 1:Fixnum
    from (irb):14
    from :0
irb(main):015:0> 1.to(9) do |x| print x done
irb(main):016:1> 1.to(9) { |x| print x }
irb(main):017:1> 1.to(9)
irb(main):018:1> 1.upto(9)
irb(main):019:1> 1.upto(9) do |x| print x done
irb(main):020:2> 1.upto(9) { |x| print x }
irb(main):021:2> print "x"
irb(main):022:2> abc
irb(main):023:2> a
irb(main):024:2> b

2 个答案:

答案 0 :(得分:5)

发生错误后,您输入了done而不是end

在解析块之前没有执行任何操作,但是end从未出现过,所以irb只是继续阅读...

将来只需键入^ C或^ D,直到返回顶层或shell,然后重新开始。

答案 1 :(得分:3)

IRB正在等待关闭的事情(在这种情况下,第15行的do块需要end。)

您可以通过观看行号(:0:1:2 ...)之后的数字来注意这一点:虽然它是肯定的,但IRB希望您关闭某些内容。< / p>

您可以按Ctrl + C中止当前命令并启动一个新命令。