2011-03-24 27 views
17

मेरे पास स्थिरांक के लिए एक रूबी मॉड्यूल है। इसमें चर और 1 विधि की एक सूची है जो स्वरूपण लागू करती है। मैं इस मॉड्यूल में विधि का उपयोग नहीं कर सकता। कोई विचार क्यों?रूबी मॉड्यूल विधि पहुंच

+9

क्या आप अपना कोड पोस्ट कर सकते हैं? –

उत्तर

51

आप मॉड्यूल include तो विधि एक उदाहरण विधि हो जाता है, लेकिन अगर आप extend मॉड्यूल तो यह एक वर्ग विधि हो जाता है।

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

यह वास्तव में सहायक था। धन्यवाद :) – Rads

0

आम तौर पर, मॉड्यूल के साथ, इन बातों हो रहा जाना चाहिए:>/lib

में रखें मॉड्यूल -: -

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

application.rb में> AutoLoad पथ, पंक्ति जोड़ें

-> 'NAMEOFMODULE'

के साथ मॉड्यूल शामिल करें (यदि मॉड्यूल में अंडरस्कोर है game_engine, आपको 'गेमइंजिन' शामिल करने की आवश्यकता है)

+0

मैं उसी मॉड्यूल के भीतर विधि तक नहीं पहुंच सकता: –

+0

इस मॉड्यूल की तरह कुछ कॉन्स्टेंट # इस टेम्पलेट को बदलने के लिए फ़ाइल | सेटिंग्स | फ़ाइल टेम्पलेट्स। डीईएफ़ remove_formatting (मूल) परिवर्तित = original.replace (original.gsub! (/ \ डब्ल्यू + /, '')) वापसी परिवर्तित अंत नाम = अंत –

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

"यह एक नाम है" क्या आप अगर फू में कुछ और तरीका है और आप उस विधि के भीतर हैलो तक पहुंचना चाहते हैं? आपको इसे कैसे करना होगा? –

+0

मुझे यह नहीं मिला। आप उस विधि के अंदर बस 'हैलो' कह सकते हैं। – GutenYe

+0

सरल लेकिन पूरा जवाब। – Hito

संबंधित मुद्दे