मेरे पास my_module.rb नामक फ़ाइल में रूबी मॉड्यूल है:

module My_module
    def my_module_method
       puts 'inside my method'
    end
end

उसी फ़ोल्डर में my_class.rb फ़ाइल में, मेरे पास मॉड्यूल के भीतर एक वर्ग है।

module My_module
   class My_class
        def my_object_method
          My_module.my_module_method
        end
   end
end

My_module::My_class.new.my_object_method => 'undefined method 'my_module_method''

मुझे इस त्रुटि की उम्मीद नहीं थी। मैंने मान लिया था कि रूबी 'My_module.my_module_method' लाइन में चलेगी और 'My_module' नामक मॉड्यूल की खोज करेगी और इसके भीतर 'my_module_method' नामक एक विधि की खोज करेगी। उदाहरण के लिए, जावा यही करता है। हालांकि रूबी ऐसा नहीं करती। my_object_method काम करने के लिए, मुझे my_class.rb में लिखना होगा:

require 'my_module.rb'

जब मैं my_object_method को कॉल करता हूं तो रूबी My_module की खोज क्यों नहीं करती है? यह स्पष्ट लगता है कि इसे क्या खोजना चाहिए और इसलिए प्रोग्रामर को स्पष्ट रूप से लिखने की आवश्यकता के लिए अनावश्यक है 'हां, रूबी, कृपया मुझे मॉड्यूल-व्यापी विधियों पर कॉल करने की अनुमति दें।' मुझे किसकी याद आ रही है?

0
nickackerman42 18 अगस्त 2017, 00:34

1 उत्तर

सबसे बढ़िया उत्तर

रूबी स्वचालित रूप से फ़ाइलों को लोड नहीं करता है। अगर आपको किसी फ़ाइल से कोड की आवश्यकता है, तो आपको इसे स्पष्ट रूप से लोड करना होगा (आवश्यकता को कॉल करके)।

इस प्रकार, जब आप "ruby my_class.rb" चलाते हैं तो यह केवल इस फ़ाइल को लोड करता है और आपको फ़ाइलों के बीच निर्भरता को स्वयं परिभाषित करना होगा।

1
Tema Bolshakov 18 अगस्त 2017, 08:48