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 と入力してから、最初からやり直してください。

于 2012-10-25T05:42:21.190 に答える
3

IRBは何かが閉じるのを待っています(この場合、do15行目のブロックにはが必要endです)。

これは、行番号(、、 ...)の後の番号を見る:0とわかります。正の値である間、IRBは何かを閉じるように求めています。:1:2

Ctrl + Cを押すと、現在のコマンドを中止して新しいコマンドを開始できます。

于 2012-10-25T05:53:00.713 に答える