[前][次][番号順一覧][スレッド一覧]

ruby-reference-manual:2942

From: okkez _ <redmine@r...>
Date: Tue, 13 Dec 2011 20:44:14 +0900
Subject: [ruby-reference-manual:2942] [るりまプロジェクト - Bug #5506][Assigned] LocalJumpError の説明やサンプルコード実行結果がおかしい


Issue #5506 has been updated by okkez _.

Category set to doc
Status changed from Open to Assigned
Assignee set to okkez _

バージョンによってバラバラの結果になる。

----------------------------------------
Bug #5506: LocalJumpError の説明やサンプルコード実行結果がおかしい
http://redmine.ruby-lang.org/issues/5506

Author: Hiroshi Koyama
Status: Assigned
Priority: Normal
Assignee: okkez _
Category: doc
Target version: 
reporter: 
ruby_version: 


http://doc.ruby-lang.org/ja/1.9.2/class/LocalJumpError.html
> def foo
>   proc { return 10 }
> end
> 
> begin
>   foo.call
> rescue LocalJumpError => err
>   p err              # => #<LocalJumpError: return from block-closure>
>   p err.reason       # => :return
>   p err.exit_value   # => 10
> end
> 
> begin
>   Block.new { break 5 }.call
> rescue LocalJumpError => err
>   p err              # => #<LocalJumpError: break from block-closure>
>   p err.reason       # => :break
>   p err.exit_value   # => 5
> end

foo.call を実行すると、#<LocalJumpError: return from block-closure> ではなく、
#<LocalJumpError: unexpected return> が発生しますぽよ。

あと、Blockというクラスが存在しないので、実行できませんぽよ。
Procに変更すれば、#<LocalJumpError: break from proc-closure> が発生しますぷよ。

さらに、上部に

> return, break, retry のいずれかを実行すると発生します。
という記述があるけど、retry の場合は SyntaxError となりますぷお。


$ ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux]
$ cat test.rb
def foo
  proc { return 10 }
end

begin
  foo.call
rescue LocalJumpError => err
  p err              # => #<LocalJumpError: return from block-closure>
  p err.reason       # => :return
  p err.exit_value   # => 10
end

begin
  Block.new { break 5 }.call
rescue LocalJumpError => err
  p err              # => #<LocalJumpError: break from block-closure>
  p err.reason       # => :break
  p err.exit_value   # => 5
end
$ ruby test.rb
#<LocalJumpError: unexpected return>
:return
10
test.rb:14:in `<main>': uninitialized constant Object::Block (NameError)



-- 
http://redmine.ruby-lang.org

--
ML: ruby-reference-manual@m...
Info: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]