एक ब्लॉक नहीं एक लैम्ब्डा है। यह देखने के लिए कि ब्लॉक का उपयोग block_given?
है या नहीं।
किसी भी मामले में, मैं "कॉल करने का जवाब" का उपयोग करूंगा यदि केवल मुझे वास्तव में इस निर्माण की आवश्यकता है, जिसे मैं टालने का प्रयास करूंगा। (अनुबंध परिभाषित करें और फोन करने वाले इसे सही ढंग से लागू करने के लिए जिम्मेदार बनाना!)
(lambda {1}).respond_to? :call # => true
(1).respond_to? :call # => false
मैं संरचनात्मक (उर्फ बतख) के इस रूप का मानना है कि टाइपिंगकर्ताकारक टाइपिंग की तुलना में रूबी के साथ और अधिक इनलाइन है के साथ "है एक "रिश्ते।
देखने के लिए क्या (सैंडबॉक्स में भविष्य खेलने के लिए) रिश्तों पैदा हो सकती हैं "एक है":
RUBY_VERSION # => 1.9.2
(lambda {}).class # => Proc
(Proc.new {}).class # => Proc
def x (&p); p; end # note this "lifts" the block to a Proc
(x {}).class # => Proc
मुबारक कोडिंग।
स्रोत
2012-03-28 00:33:31
बहुत अच्छा है कि 'answer_to?' विधि है। इस तरह के चीजों को बहुत आसान बनाता है। – Automatico