जैसा कि नीचे रूबी उदाहरण में दिखाया गया है, मैं lambda
को Proc
के रूप में Proc
के तर्कों की गलत संख्या के साथ कॉल नहीं कर सकता क्योंकि यह तर्कों की संख्या के बारे में सख्त है:विधि या लैम्ब्डा को गैर-लैम्ब्डा प्रो में कनवर्ट करने के लिए कैसे करें
# method with no args
def a; end
instance_eval(&method(:a))
# ArgumentError: wrong number of arguments (1 for 0)
method(:a).to_proc.call(1, 2, 3)
# ArgumentError: wrong number of arguments (3 for 0)
method(:a).to_proc.lambda?
# => true
मैं एक Proc
है कि या तो एक Proc
से एक लैम्ब्डा है या एक Method
से कि नहीं है कैसे मिलता है?
जहाँ तक मैं कह सकता हूं, आप एक विधि या लैम्ब्डा को गैर-लैम्ब्डा प्रो में परिवर्तित नहीं कर सकते हैं। आप क्या खत्म करने की कोशिश कर रहे हैं? –
@WallyAltman एक ब्लॉक के कॉलिंग अर्थशास्त्र, तर्कों की संख्या के संबंध में सभी के ऊपर, लेकिन कई अन्य अंतर हैं। – michelpm