2010-04-23 12 views
15

फ़ाइल welcome.rb शामिल हैं:आईआरबी में आवश्यक रूबी फ़ाइल में परिभाषित एक चर का उपयोग कैसे कर सकता हूं?

welcome_message = "hi there" 

लेकिन आईआरबी में, मैं चर मैं अभी बनाया का उपयोग नहीं कर सकते हैं:

require './welcome.rb' 

puts welcome_message 

# => undefined local variable or method `welcome_message' for main:Object 

क्या पूर्वनिर्धारित वैरिएबल में लाने के लिए सबसे अच्छा तरीका है और प्रारंभ काम है जब आप require अपने आईआरबी सत्र में कुछ करते हैं तो किया जाता है? वैश्विक चर सही रास्ते की तरह प्रतीत नहीं होते हैं।

उत्तर

14

हालांकि यह है कि आप स्थानीय चर आवश्यक फाइलों में परिभाषित उपयोग नहीं कर सकते सच है, आप स्थिरांक का उपयोग कर सकते हैं, और आप एक वस्तु है कि आप दोनों संदर्भों में की पहुंच है में संग्रहीत कुछ भी उपयोग कर सकते हैं। इसलिए, आपके लक्ष्यों के आधार पर जानकारी साझा करने के कुछ तरीके हैं।

सबसे आम समाधान संभवतः एक मॉड्यूल को परिभाषित करने और वहां साझा साझा मूल्य डालने के लिए है। चूंकि मॉड्यूल स्थिरांक हैं, इसलिए आप इसे आवश्यक संदर्भ में एक्सेस कर पाएंगे।

# in welcome.rb 
module Messages 
    WELCOME = "hi there" 
end 

# in irb 
puts Messages::WELCOME # prints out "hi there" 

आप मूल्य को एक वर्ग के अंदर भी उतना ही प्रभाव डाल सकते हैं। वैकल्पिक रूप से, आप इसे फ़ाइल में स्थिर के रूप में परिभाषित कर सकते हैं। चूंकि डिफ़ॉल्ट संदर्भ वर्ग ऑब्जेक्ट का एक ऑब्जेक्ट है, जिसे मुख्य के रूप में जाना जाता है, आप मुख्य रूप से एक विधि, आवृत्ति चर या वर्ग चर परिभाषित भी कर सकते हैं। इन सभी दृष्टिकोणों को "वैश्विक चर" बनाने के अनिवार्य रूप से अलग-अलग तरीके होने का अंत होता है, और अधिकतर प्रयोजनों के लिए अनुकूल नहीं हो सकता है। दूसरी ओर, बहुत अच्छी तरह से परिभाषित क्षेत्रों के साथ छोटी परियोजनाओं के लिए, वे ठीक हो सकते हैं।

# in welcome.rb 
WELCOME = "hi constant" 
@welcome = "hi instance var" 
@@welcome = "hi class var" 
def welcome 
    "hi method" 
end 


# in irb 
# These all print out what you would expect. 
puts WELCOME 
puts @welcome 
puts @@welcome 
puts welcome 
+2

नाइस, एक टिप्पणी के रूप में: जॉन हाइलैंड के कोड में 'वेलकम' का उपयोग किया जा सकता है क्योंकि यह * अपकेस * अक्षर से शुरू हुआ, यह इसे स्थिर बना देता है। रूबी ब्याज है। –

2

मुझे लगता है कि सबसे अच्छा तरीका यह

class Welcome 
    MESSAGE = "hi there" 
end 

की तरह एक वर्ग को परिभाषित करने के लिए तो आईआरबी में आप इस तरह अपने कोड कॉल कर सकते हैं है:

puts Welcome::MESSAGE 
2

कि कम से कम आईआरबी से अनुभव सक्षम होना चाहिए :

def welcome_message; "hi there" end 
3

आप शामिल फ़ाइल में परिभाषित स्थानीय चरों तक नहीं पहुंच सकते हैं। आप ivars उपयोग कर सकते हैं:

# in welcome.rb 
@welcome_message = 'hi there!' 

# and then, in irb: 
require 'welcome' 
puts @welcome_message 
#=>hi there! 
संबंधित मुद्दे

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