Hatena::Grouprubyist

Rubyをラクガク(正規表現編) RSSフィード

2009-01-17

[]module関数 module関数 - Rubyをラクガク(正規表現編) を含むブックマーク はてなブックマーク - module関数 - Rubyをラクガク(正規表現編) module関数 - Rubyをラクガク(正規表現編) のブックマークコメント

moduleがネストされている場合、内側のmoduleから外側のmoduleのメソッドを呼び出したい。というのも、外側のモジュールに、内側のモジュールから呼び出す共通メソッドを定義したいから。

module A
  def hoge
    puts "hoge"
  end
  module B
    def foo
      puts "foo"
      hoge
    end
  end
end

class Bar
  include A::B
  def bar
    foo
  end
end

Bar.new.bar
foo
test2.rb:8:in `foo': undefined local variable or method `hoge' for #<Bar:0xb7d3f6f0> (NameError)
        from test2.rb:16:in `bar'
        from test2.rb:20

やはり普通には見えないのか。外側のモジュールでself.hogeとしてモジュール関数にしておいて、Bの方でA.hogeとして呼び出せばいける。

module A
  def self.hoge
    puts "hoge"
  end
  module B
    def foo
      puts "foo"
      A.hoge
    end
  end
end

class Bar
  include A::B
  def bar
    foo
  end
end

Bar.new.bar
foo
hoge

AlinaAlina2012/05/23 07:08Good to see a tealnt at work. I can't match that.

ihcbltmihcbltm2012/05/23 15:32qqA7x6 <a href="http://cpmdrzpftdlo.com/">cpmdrzpftdlo</a>

idpojnidpojn2012/05/23 20:17gVtmZ3 , [url=http://ekgfbutynahu.com/]ekgfbutynahu[/url], [link=http://ouztulkatrjb.com/]ouztulkatrjb[/link], http://rupvlmoxyebi.com/

fhznmvafhznmva2012/05/26 20:21v36pvv , [url=http://vjrcdckwwxyy.com/]vjrcdckwwxyy[/url], [link=http://rrtsszjhifre.com/]rrtsszjhifre[/link], http://hpxpaxrcgvaz.com/