Hatena::Grouprubyist

bongoleのRubyを楽しむ日記 このページをアンテナに追加 RSSフィード

Rubyを楽しむ日記

2007-07-18

[]定数が見えない 01:26 定数が見えない - bongoleのRubyを楽しむ日記 を含むブックマーク

module Fuga
    CONSTANT = 'constant'
end

module Hoge
    include Fuga

    class Hige
        def initialize
            puts CONSTANT
        end
    end
end

p Hoge::Hige.new

と書くと

test.rb:10:in `initialize': uninitialized constant Hoge::Hige::CONSTANT (NameError)

from test.rb:15:in `new'

from test.rb:1

とおこられてしまう。

module Hoge
    CONSTANT = 'constant'

    class Hige
        def initialize
            puts CONSTANT
        end
    end
end

p Hoge::Hige.new

こっちはちゃんと動く。

なんでだろ。。。。

んー今更ながら、includeの理解が曖昧だ。。。

2007-07-17

[] do..end or {} ? 00:35  do..end or {} ? - bongoleのRubyを楽しむ日記 を含むブックマーク

#test.rb
p [1,2,3].collect { |i|
       i
  }.compact

と書くと

[1,2,3]

が表示されるけど、

#test.rb
p [1,2,3].collect do |i|
       i
  end.compact

と書くと

[1,2,3]

test.rb:3: undefined method `compact' for nil:NilClass (NoMethodError)

と表示される。

この違いがなんなのか説明できない。。。。orz

ちなみに実験環境

ruby 1.8.5 (2006-12-25 patchlevel 12) [i386-mswin32]