Rubyで動的にクラスを定義することを考えています。
以下のコードでは、メソッド aaa と bbb は共に同じクラス Hoge のメソッドなのですが、見た目が全く同じコードであるにも関わらず、実行したときの結果が異なります。どういう理屈でこの違いが生じるのか、どなたか教えていただけないでしょうか。
ruby
1Hoge = Class.new do |klass| 2 klass::HOGE = "hoge" 3 def aaa 4 return HOGE 5 end 6end 7 8class Hoge 9 def bbb 10 return HOGE 11 end 12end 13 14x = Hoge.new 15x.bbb 16# => "hoge" 17x.aaa 18# => t.rb:4:in `aaa': uninitialized constant HOGE (NameError) 19# from t.rb:16:in `<main>'
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/28 04:16
2017/02/28 04:25