ما هو المناهج
الكاري هي عملية تحويل تحول وظيفة تقبل معلمات متعددة في وظيفة تقبل معلمة واحدة (ملاحظة الترجمة: المعلمة الأولى للدالة الأصلية). إذا كانت المعلمات الأخرى ضرورية ، فقم بإرجاع وظيفة جديدة تقبل المعلمات المتبقية وإرجاع النتيجة.
الفكر الكيميائي كيلي: فكرة معالجة JS قبل المعالجة ؛ يمكن تشكيل المبدأ القائل بأن استخدام تنفيذ الوظيفة يمكن أن يشكل نطاقًا غير يتم تدميره ، ويتم تخزين جميع المحتوى الذي يجب معالجته مسبقًا في هذا النطاق الذي لم يتم تدميره ، وسيتم تنفيذ وظيفة صغيرة في الوظيفة الصغيرة.
تلعب وظيفة الكاري بشكل رئيسي دورًا في المعالجة المسبقة ؛
دالة طريقة الربط: معالجة هذا في طريقة رد الاتصال على رد الاتصال الذي تم تمريره في سياق سياق ؛
مدونة مبدأ تنفيذ طريقة ربط 1 كما يلي:
/*** مبدأ تنفيذ طريقة الربط 1* Param Callback [function] وظيفة رد الاتصال* param Context [Object] Context* @Returns {function} قم بتغيير الوظيفة التي يتم الإشارة إليها بواسطة هذا*/وظيفة ربط (رد الاتصال ، context) {var outerarg = array.prototype.slice.call (الحجج 2) Return Function () {var innerarg = array.prototype.slice.call (الوسيطات ، 0) ؛ // يعني أخذ جميع معلمات الوسائط في النطاق الحالي ؛ callback.apply (السياق ، outerarg.concat (innerarg)) ؛}}يقلد الرمز التالي مبدأ تنفيذ الربط على سلسلة النموذج الأولي
/*** تقليد مبدأ تنفيذ الربط على سلسلة النموذج الأولي (فكرة الوظيفة الكورية والكيميائية)* param context [object] context* regurns {function} الوظيفة التي يتم الإشارة إليها بواسطة*/function.prototype.mybind = function myBind (context) {var _this = this ؛ var outarg = array.protypy.call ؛ if ('bind' in function.prototype) {return this.bind.apply (this ، [context] .Concat (outArg)) ؛} // return function in intaviable () {var inarg = array.prototype.slice.call (endress ، 0) ؛ inarg.length === 0؟ outarg.concat (inarg) ؛ _ this.apply (السياق ، arg) ؛}}وظيفة الكاري
في علوم الكمبيوتر ، تعتبر Curry تقنية لتحويل وظيفة تقبل معلمات متعددة في وظيفة تقبل معلمة واحدة (المعلمة الأولى من الوظيفة الأصلية) ، وإرجاع وظيفة جديدة تقبل المعلمات المتبقية وإرجاع النتيجة.
الكاري يعني تمرير بعض المعلمات مقدمًا للحصول على وظيفة بسيطة. ولكن يتم حفظ المعلمات التي تم تمريرها مسبقًا في الإغلاق ، لذلك هناك بعض الميزات الغريبة. على سبيل المثال:
مثال:
var adder = function (num) {return function (y) {return num + y ؛}} var inc = adder (1) ؛ var dec = adder (-1) ؛ // inc ، DEC الآن وظيفتان جديدتان ، يتم استخدامه لتمرير في قيمة المعلمة (+/-) 1alert (inc (99)) ؛ // 100alert (DEC (101)) ؛ // 100alert (adder (100) (2)) ؛ // 102alert (adder (2) (100)) ؛ // 102المحتوى أعلاه هو وظيفة Curling JavaScript وطريقة تنفيذ طرق الربط التي قدمها لك المحرر. آمل أن يكون ذلك مفيدًا للجميع!