2009-08-07 28 views
14

Mam problem z ustaleniem metody wywoływania metody z modułu nadrzędnego w klasie.Wywoływanie metod modułu nadrzędnego z zagnieżdżonej klasy

Chcę wywoływać funkcje modułu z modułu nadrzędnego w moich klas zagnieżdżonych, ale nie można znaleźć sposób, aby to zrobić.

przykład:

module Awesome 
    class Checker 
    def awesome? 
     awesome_detection 
    end 
    end 

    module_function 
    def awesome_detection 
    true 
    end 

end 

Jeśli zadzwonię Awesome::Checker.new.awesome?, to nieświadomy awesome_detection

jakieś pomysły na to, co mi brakuje?

+0

Właśnie zapamiętałem - zdałem sobie sprawę, że mogę zrobić "włącz Awesome" w warcabu, ale chcę wiedzieć inaczej, jeśli mam wiele klas w 'Awesome'. –

Odpowiedz

22
#!/usr/bin/env ruby -wKU 

module Awesome 

    class Checker 
    def awesome? 
     Awesome.awesome_detection 
    end 
    end 

    def self.awesome_detection 
    puts "yes" 
    end 

end 

Awesome::Checker.new.awesome? 
# => yes 
#!/usr/bin/env ruby -wKU 

module Awesome 

    class Checker 
    def awesome? 
     Awesome.awesome_detection 
    end 
    end 

    def self.awesome_detection 
    puts "yes" 
    end 

end 

Awesome::Checker.new.awesome? 
# => yes 
+0

Funkcja 'module_function' w pierwotnym pytaniu była lepsza. Naprawianie "def awesome?" W celu wywołania 'Awesome.awesome_detection' byłoby wystarczające. –

Powiązane problemy