कहो मैं अगर मैं एक समारोह संभालमैटलैब: एक समारोह संभाल एक समारोह के दूसरे दिए गए मान को पकड़ने को परिभाषित करने
f = @(c)foo(c)
जैसे इस्तेमाल किया जा करने के लिए विचार एक समारोह के रूप में foo
[a b] = foo(c).
परिभाषित किया गया है कि एक cellfun
कॉल में, क्या मैं एक f
एक foo
तरह
a = foo(c)
अर्थात परिभाषित करने के लिए समतुल्य रूप से व्यवहार कर रहा है, दिए गए मान b
खो जाए।
इसलिए, जब इस तरह के एक f
एक cellfun
कॉल में डाल दिया जाता है, उत्पादन सेल सिर्फ a
रों होगा और b
रों (जो मैं वर्तमान के बारे में परवाह) को याद करेंगे। दिखने में
cellfun(f,input)
[a(input{1})] ?
[a(input{2})] ?
.... b gets killed along the way
प्रश्न: कैसे foo
जो कैच सिर्फ b
रों करने के लिए एक समारोह संभाल परिभाषित करने के लिए? अर्थात
b = foo(c)
अर्थात^2, बर्बाद करa
तरह foo
की एक परिभाषा के लिए एक व्यवहार अनुरूप दे रही है।
इसके अलावा, यह संभव है (कुशलता) दोनों a
और एक अद्वितीयcellfun
कॉल में b
पकड़ने?
अच्छा है, यह 'सेलफुन' कॉल से संबंधित चीज़ों के लिए काम करता है; मेरे मामले में मैंने '[ए, बी]' और '' ~ ~ बी] नहीं रखा, मेरा मैटलैब संस्करण इसका समर्थन नहीं करता है। तो दूसरा बिंदु सफलतापूर्वक उत्तर दिया गया है! जहां तक मैं एक लैम्ब्डा परिभाषा में दूसरा लौटा तर्क प्राप्त करने की सामान्य समस्या को देख सकता हूं, अभी भी है। यही है ना – Acorbe
@Acorbe अद्यतन उत्तर देखें। यह बिल्कुल वही है - आप किसी फ़ंक्शन की घोषणा नहीं बदल सकते हैं, लेकिन आप अपने अनाम फ़ंक्शन कॉल में एकाधिक आउटपुट निर्दिष्ट कर सकते हैं। – angainor
ठीक है कि मैं देखता हूं .. मैं अभी भी ऐसा कुछ ढूंढ रहा हूं जिसे '[ए, बी] = foo' सामान करने की आवश्यकता नहीं है। मुख्य रूप से retrocompatibility मुद्दों के लिए। दरअसल, किसी अन्य फ़ंक्शन (गैर फ़ंक्शन हैंडल) में फ़ंक्शन 'foo' को लपेट सकता है, हालांकि लैम्ब्डा स्वाद को खो देता है। मैनुअल के उस हिस्से को हाइलाइट करने के लिए धन्यवाद जो मैंने ध्यान से पर्याप्त रूप से नहीं पढ़ा है। – Acorbe