4

我是红宝石的新手。
当我使用 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
4

2 回答 2

5

发生的事情是在错误之后,您键入done而不是end.

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

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

于 2012-10-25T05:42:21.190 回答
3

IRB 正在等待某些东西关闭(在这种情况下do,第 15 行的块需要一个end)。

你可以通过观察行号后面的数字来注意到这一点(:0, :1, :2...):虽然它是积极的,但 IRB 想要你关闭一些东西。

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

于 2012-10-25T05:53:00.713 回答