का उपयोग करें eval
!
लुइस Mendo के जवाब से प्रेरित होकर यहाँ ।
बेनामी फ़ंक्शंस ज्यादातर मामलों में स्क्रिप्ट बनाने से कम होते हैं जिनकी एक या अधिक कॉल करने की आवश्यकता होती है input('')
। नकारात्मक पक्ष यह है कि लूप और परिवर्तनीय संशोधन (जैसे मैट्रिक्स में दो तत्वों की अदला-बदली) असंभव है ।
साथ eval
आप इनपुट लाने के रूप में आप एक सामान्य गुमनाम समारोह के साथ करते हैं, और स्क्रिप्ट को चलाने के रूप में आप एक सामान्य स्क्रिप्ट के साथ करते हैं,:
इस पर विचार करें :
c=(i=@input)('');N=i('');A=i('');for C=c,A(flip(k))=A(k=[x=find(A==C),N^2+1-x]);end,A
इसकी तुलना में:
@(c,N,A)eval('for C=c,A(flip(k))=A(k=[x=find(A==C),N^2+1-x]);end,A')
कोड समान है, लेकिन इनपुट अनुभाग बहुत छोटा है।
इसका उपयोग इनपुट चर को संशोधित करने के लिए भी किया जा सकता है, इस तरह (इसके लिए लुइस मेंडो को श्रेय !)।
f(x)eval('x([1,4])=x([4,1])`;