प्रश्न का उत्तर दिया गया है, लेकिन मुझे लगता है कि कुछ बोल्ड और strikethroughs यह बहुत आसान कोड रूपांतरण भी देख सकते हैं। उम्मीद है कि यह उत्तर किसी भी व्यक्ति की मदद करता है जो समस्या को देखने के लिए संघर्ष कर रहा है।
आप लिखना और नरक नहीं लिखेंगे;
var floor = function(x) { return Math.floor(x) }
इसके बजाय, आप लिखेंगे & hellip;
var floor = Math.floor
और नरकिप; और यह ठीक उसी तरह काम करेगा †। इसे Eta Conversion कहा जाता है और यदि आप इसे दो बार दोहराते हैं, तो आप देखेंगे कि ब्रायन को अधिकतर पर्याप्त मार्गदर्शिका में अपना परिणाम कैसे मिला।
एटा रूपांतरण के बुनियादी नियम यह है:
function(x) { return f(x) } === f
है & hellip; वे पूरी तरह से विनिमेय †
होने पर आप
var getServerStuff = function(callback) {
return ajaxCall(function(json) {
return callback(json)
})
}
पहला रूप में है & hellip मूल कोड में उसी तकनीक का उपयोग कर सकते हैं;
return ajaxCall(function(json) { return callback(json) })
ईटा रूपांतरण कहता है & hellip;
function(json) { return callback(json) } === callback
तो आइए पहले ईटा रूपांतरण और नरक के परिणामों के साथ पूरे कोड को देखें;
// first step
var getServerStuff = function(callback) {
return ajaxCall(function(json) {
returncallback(json)
})
}
// eta converts to ...
var getServerStuff = function(callback) {
return ajaxCall(callback)
}
इस परिदृश्य को हमें परिचित होना चाहिए। एक और ईटा रूपांतरण हमें अंतिम सरलीकृत रूप में लाएगा।मैं बोल्डिंग एक और बार बोल्ड कर दूंगा ताकि हम इसे बेहतर देख सकें
ईटा रूपांतरण कहता है & hellip;
function(callback) { return ajaxCall(callback) } === ajaxCall
// second step
var getServerStuff = function(callback) {
returnajaxCall(callback)
}
// eta converts to ...
var getServerStuff = ajaxCall
सभी इरादों और उद्देश्यों के लिए †, वे परस्पर विनिमय कर रहे। एफपी के लिए अधिकतर पर्याप्त मार्गदर्शिका गतिशील बाध्यकारी या this
'AJAXCall' का उपयोग एक कॉल करने योग्य तर्क लेता है जो स्वयं एक ही तर्क लेता है,' json'। यदि वह कॉलबैक करता है तो एक ही तर्क के साथ एक और फ़ंक्शन कॉल करता है, * इसे उस फ़ंक्शन * द्वारा प्रतिस्थापित किया जा सकता है। – jonrsharpe
यह समान है, हालांकि सटीक समकक्ष नहीं है, जिसे अधिक अनिवार्य भाषाओं में * इनलाइनिंग * कहा जाता है। –
@jonrsharpe वह क्यों है? इसे क्यों बदला जा सकता है? क्या इसके लिए कोई नाम है? –