Ruby Language
instance_eval
खोज…
वाक्य - विन्यास
- object.instance_eval 'कोड'
- object.instance_eval 'कोड', 'फ़ाइल नाम'
- object.instance_eval 'कोड', 'फ़ाइल नाम', 'लाइन नंबर'
- object.instance_eval {कोड}
- object.instance_eval {| रिसीवर | कोड}
पैरामीटर
पैरामीटर | विवरण |
---|---|
string | मूल्यांकन किया जाने वाला रूबी स्रोत कोड समाहित करता है। |
filename | त्रुटि रिपोर्टिंग के लिए उपयोग करने के लिए फ़ाइल का नाम। |
lineno | त्रुटि रिपोर्टिंग के लिए उपयोग करने के लिए लाइन नंबर। |
block | कोड का मूल्यांकन किया जाना है। |
obj | रिसीवर को केवल तर्क के रूप में ब्लॉक में पारित किया जाता है। |
उदाहरण मूल्यांकन
instance_eval
पद्धति सभी वस्तुओं पर उपलब्ध है। यह रिसीवर के संदर्भ में कोड का मूल्यांकन करता है:
object = Object.new
object.instance_eval do
@variable = :value
end
object.instance_variable_get :@variable # => :value
instance_eval
सेट self
को object
कोड ब्लॉक की अवधि के लिए:
object.instance_eval { self == object } # => true
रिसीवर को इसके एकमात्र तर्क के रूप में ब्लॉक में भी भेजा जाता है:
object.instance_eval { |argument| argument == object } # => true
instance_exec
विधि इस संबंध में अलग है: यह बजाय ब्लॉक करने के लिए अपने तर्कों से गुजरता है।
object.instance_exec :@variable do |name|
instance_variable_get name # => :value
end
के साथ कार्यान्वित कर रहा है
कई भाषाओं में एक बयान के with
सुविधा होती है जो प्रोग्रामर को विधि कॉल के रिसीवर को छोड़ देने की अनुमति देता है।
with
आसानी से उपयोग कर रहा रूबी में नकल करते जा सकती है instance_eval
:
def with(object, &block)
object.instance_eval &block
end
with
विधि मूल वस्तुओं पर तरीकों पर अमल करने के लिए इस्तेमाल किया जा सकता है:
hash = Hash.new
with hash do
store :key, :value
has_key? :key # => true
values # => [:value]
end
Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow