क्या रूबी में एक मॉड्यूल में एक चर बनाने का कोई तरीका है जो एक वर्ग चर के समान व्यवहार करेगा? इससे मेरा तात्पर्य यह है कि इसे मॉड्यूल के एक उदाहरण को शुरू किए बिना एक्सेस किया जा सकेगा, लेकिन इसे बदला जा सकता है (मॉड्यूल में स्थिरांक के विपरीत)।
क्या रूबी में एक मॉड्यूल में एक चर बनाने का कोई तरीका है जो एक वर्ग चर के समान व्यवहार करेगा? इससे मेरा तात्पर्य यह है कि इसे मॉड्यूल के एक उदाहरण को शुरू किए बिना एक्सेस किया जा सकेगा, लेकिन इसे बदला जा सकता है (मॉड्यूल में स्थिरांक के विपरीत)।
जवाबों:
रूबी मूल रूप से मॉड्यूल में वर्ग चर का समर्थन करती है, इसलिए आप सीधे वर्ग चर का उपयोग कर सकते हैं, न कि कुछ प्रॉक्सी या छद्म-वर्ग-चर:
module Site
@@name = "StackOverflow"
def self.setName(value)
@@name = value
end
def self.name
@@name
end
end
Site.name # => "StackOverflow"
Site.setName("Test")
Site.name # => "Test"
defined?(@@foo) => "class variable"
:।
@
उदाहरण चर से एक ही परिणाम प्राप्त कर सकता हूं । क्या वर्ग चर का उपयोग करने का कोई विशेष कारण है? उत्तर के लिए धन्यवाद।
T.get
और T::get
?
यदि आपको इसे एक उदाहरण के भीतर से कॉल करने की आवश्यकता नहीं है, तो आप बस मॉड्यूल बॉडी के भीतर एक इंस्टेंस चर का उपयोग कर सकते हैं।
module SomeModule
module_function
def param; @param end
def param= v; @param = v end
end
SomeModule.param
# => nil
SomeModule.param = 1
SomeModule.param
# => 1
उदाहरण चर @param
तब मॉड्यूल से संबंधित होगा SomeModule
, जो Module
वर्ग का एक उदाहरण है ।
आप मॉड्यूल में एक वर्ग उदाहरण चर सेट कर सकते हैं।
module MyModule
class << self; attr_accessor :var; end
end
MyModule.var = 'this is saved at @var'
MyModule.var
=> "this is saved at @var"