स्पष्ट है - इस कोड को पूरी तरह से चल रहा है - code with procजब बुला instance_eval (और लैम्ब्डा) वर्तमान संदर्भ पारित करने के लिए त्रुटि मिली 'की गलत संख्या तर्क'
लेकिन अगर बजाय मैं लैम्ब्डा को Proc.new बदलने के लिए, मैं कर रहा हूँ एक त्रुटि
ArgumentError: wrong number of arguments (1 for 0)
हो रही हो सकता है इस वजह से instance_eval का कोई पैरामीटर के रूप में स्वयं को पारित करने के लिए करना चाहता है, और एक विधि के रूप में लैम्ब्डा व्यवहार करता है और अज्ञात पैरामीटर को स्वीकार नहीं करते?
class Rule
def get_rule
Proc.new { puts name }
end
end
class Person
attr_accessor :name
def init_rule
@name = "ruby"
instance_eval(&Rule.new.get_rule)
end
end
दूसरा नहीं है::
class Rule
def get_rule
lambda { puts name }
end
end
class Person
attr_accessor :name
def init_rule
@name = "ruby"
instance_eval(&Rule.new.get_rule)
end
end
धन्यवाद
क्या यह 'p.init_rule' के बजाय 'p.get_rule' नहीं है? – artificis