के साथ कक्षा में रूबी instance_eval instance_eval
और class_eval
के बीच मूल अंतर को समझता हूं। जब मैंने चारों ओर खेलना शुरू किया है, तो मुझे कुछ पता चला है जिसमें attr_accessor
शामिल है।attr_accessor
A = Class.new
A.class_eval{ attr_accessor :x }
a = A.new
a.x = "x"
a.x
=> "x" # ... expected
A.instance_eval{ attr_accessor :y }
A.y = "y"
=> NoMethodError: undefined method `y=' for A:Class
a.y = "y"
=> "y" # WHATTT?
कैसे यह है कि है: यहाँ एक उदाहरण है
- instance_eval हमारे एक वर्ग पर एक्सेसर में नहीं था (वस्तु)
- यह तो वास्तव में यह एक के उदाहरण पर जोड़ा ?
जो गड़बड़ है। महान उदाहरण @ डैनियल_वर्तानोव का जवाब वास्तव में बताता है कि क्यों 'attr_accessor' स्वयं पर लागू नहीं होता है, लेकिन यह वर्णन करने का एक शानदार तरीका है कि प्रत्येक प्रकार की विधि def'n के साथ क्या होता है। बहुत बहुत धन्यवाद। – brad