Project

General

Profile

Bug #5748

class_eval ブロック内での定数のスコープがドキュメントと矛盾

Added by Yasunori Miyamoto over 4 years ago. Updated over 4 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
ruby -v:
ruby 1.9.3p0 (2011-10-30) [i386-mingw32]
[ruby-dev:44983]

Description

以下の class_eval の説明によると、
http://doc.ruby-lang.org/ja/1.9.3/method/Module/i/class_eval.html

定数とクラス変数のスコープは、自身のモジュール定義式内と同じスコープになります。
とのことですが、以下のコードを実行すると NameError が発生します。

class MyClass
CONST = "MyClass"
end

MyClass.class_eval do
p CONST # => NameError
end

実行結果:
test.rb:6:in block in <main>': uninitialized constant CONST (NameError)
from test.rb:5:in
class_eval'
from test.rb:5:in `'

期待した結果:
"MyClass" と表示される。

History

#1 [ruby-dev:44991] Updated by Yukihiro Matsumoto over 4 years ago

ドキュメントの間違いです。class_evalは定数の探索経路を変えません。

#2 [ruby-dev:44994] Updated by Yasunori Miyamoto over 4 years ago

るりまプロジェクトの方に新しくチケットを作成しました。
#5760

そのため、こちらはクローズして良いと思います。

#3 [ruby-dev:44997] Updated by sorah Shota Fukumori over 4 years ago

  • Status changed from Open to Closed

Also available in: Atom PDF