2010-05-18 13 views
8

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

# inc.rb 
foo = "bar"; 


# main.rb 
require 'inc.rb' 
puts foo 

# NameError: undefined local variable or method `foo' for main:Object 

उत्तर

15

आप इस मामले में फ़ाइल में परिभाषित किए गए दायरे के बाहर एक स्थानीय तक नहीं पहुंच सकते हैं। यदि आप वेरिएबल्स चाहते हैं जो फ़ाइल सीमाओं को पार करते हैं, तो उन्हें स्थानीय लोगों के अलावा कुछ भी बनाएं। $foo, Foo और @foo सभी काम करेंगे।

यदि आप वास्तव में प्रतीक पर किसी भी प्रकार की सजावट नहीं डालना चाहते हैं (क्योंकि आपको इसे पढ़ने के तरीके को पसंद नहीं है), तो एक आम हैक इसे एक विधि के रूप में परिभाषित करने के लिए है: def foo() "bar" end

6

मैंने चक के जवाब को स्वीकार कर लिया है क्योंकि यह एक सभ्य समाधान है, हालांकि मैंने वास्तव में एक अलग विधि का उपयोग किया, जिसे मैंने सोचा था कि मैं साझा करूंगा। यह अविश्वसनीय रूप से हैकी है, लेकिन मेरे उद्देश्यों के लिए उपयोगी था। मुझे सैकड़ों फाइलों के साथ एक निर्देशिका स्कैन करने की आवश्यकता थी, जिनमें से प्रत्येक ने एक ही नाम के साथ एक वस्तु बनाई, और फिर प्रत्येक ऑब्जेक्ट के बारे में कुछ जानकारी डंप करें। किसी भी गंभीर और अस्थायी उद्देश्यों के लिए, इस की अनुशंसा नहीं करेगा!

foo = "" 
eval File.open('inc.rb').read 

puts foo # "bar" 
1

मैं आमतौर पर उन्हें विधियों के रूप में परिभाषित करता हूं। निक ने कहा कि इसी तरह के।

File1:

def static_path 
    '/opt/foo' 
end 

File2:

static_path 

तो बस एक जोड़ें:

require_relative 'file path/file name' या require_relative 'file name' < = फ़ाइलें एक ही निर्देशिका में हैं।

उस फ़ाइल में जिसे आप विधि/चर का उपयोग करना चाहते हैं।