2011-03-24 23 views
17

Sabitler için bir yakut modülüm var. Bir değişken listesi ve biçimlendirmeyi uygulayan 1 yönteme sahiptir. Bu modüldeki yönteme erişemiyorum. Bir fikrin neden? Eğer modül include EğerYakut Modülü Yöntem Erişimi

+9

Kodunuzu gönderir misiniz? –

cevap

51

yöntemi bir Örnek yöntemi olur ama sizin extend eğer modül o zaman bir sınıf yöntemi olur.

module Const 
    def format 
    puts 'Done!' 
    end 
end 

class Car 
    include Const 
end 

Car.new.format # Done! 
Car.format # NoMethodError: undefined method format for Car:Class 

class Bus 
    extend Const 
end 

Bus.format # Done! 
Bus.new.format # NoMethodError: undefined method format 
+1

Bu gerçekten helpfull.Thanks :) – Rads

0

Genellikle modüllerle, bunlar oluyor edilmelidir:/lib

yılında> Yeri modülü -: -

config.autoload_paths += %W(#{config.root}/lib) 

application.rb içinde> Autoload yolu, satır ekleyin

-> Dahil olan 'NAMEOFMODULE' modülünü dahil et

(Eğer modül aşağıdaki gibi bir alt çizgiye sahipse) game_engine, 'GameEngine'ı dahil etmelisiniz')

+0

Aynı modüldeki yönteme erişemiyorum: –

+0

Bu modül gibi birşey Sabitler # Bu temayı değiştirmek için Dosya | Ayarlar | Dosya Şablonları. def remove_formatting (orijinal) dönüştürülen = original.replace (original.gsub! (/ \ W + /, '')) dönüş dönüştürülen uç İsim = uç –

25
module Foo 
    def self.hello # This is a class method 
    puts "self.hello" 
    end 

    def hello # When you include this module, it becomes an instance method 
    puts "hello" 
    end 
end 

Foo.hello #=> self.hello 

class Bar 
    include Foo 
end 

Bar.new.hello #=> hello 
+1

"Bu bir isimdir" sana ne olursa Foo'da başka bir yöntem var ve bu yönteme merhaba demek istiyorsun? Nasıl yapardın? –

+0

Anlamadım. Bu yöntemin içinde 'merhaba' diyebilirsiniz. – GutenYe

+0

Basit ama eksiksiz bir cevap. – Hito