में एक ब्लॉक के अंदर बाध्यकारी/संदर्भ बदले मैं रूबी में एक डीएसएल कि इतने की तरह काम करता है:माणिक
desc 'list all todos'
command :list do |c|
c.desc 'show todos in long form'
c.switch :l
c.action do |global,option,args|
# some code that's not relevant to this question
end
end
desc 'make a new todo'
command :new do |c|
# etc.
end
एक साथी डेवलपर मैं अपने डीएसएल बढ़ाने command
ब्लॉक करने के लिए c
गुजर की आवश्यकता नहीं करने का सुझाव दिया है, और इस प्रकार सभी के अंदर विधियों के लिए c.
की आवश्यकता नहीं है; शायद, वह मैं निम्नलिखित कोड काम ही कर सकता है निहित:
desc 'list all todos'
command :list do
desc 'show todos in long form'
switch :l
action do |global,option,args|
# some code that's not relevant to this question
end
end
desc 'make a new todo'
command :new do
# etc.
end
command
के लिए कोड लग रहा है कुछ
def command(*names)
command = make_command_object(..)
yield command
end
मैं कई बातें करने की कोशिश की और यह काम करने के लिए प्राप्त करने में असमर्थ था, मैं command
ब्लॉक के अंदर कोड के संदर्भ/बाध्यकारी को डिफ़ॉल्ट से अलग करने के तरीके को समझ नहीं पाया।
यदि यह संभव है तो कोई विचार और मैं इसे कैसे कर सकता हूं?
विशेष का मूल्यांकन है: यहाँ एक और सवाल से लिखने हो रहा है? लिंक्ड आलेख इसे इस तरह इंगित नहीं करता है। मेरा कोड, 'कमांड' की परिभाषा में, 'उपज' करता है। क्या आप कह रहे हैं कि मुझे अपने विधि सिग में ब्लॉक करना चाहिए, और फिर example_eval जो उपज के बजाय ब्लॉक करता है? (इस जानकारी के साथ प्रश्न अद्यतन) – davetron5000