انتقل إلى المحتوى الرئيسي

وظائف ذات ترتيب أعلى

@serverSerrverlesskiy

تسمح وظائف الترتيب الأعلى بأن يكون JavaScript مناسبًا لـfunctional programming. تستخدم هذه الوظائف على نطاق واسع في JavaScript. إذا كنت قد قمت ببرمجتها في JavaScript ولو قليلاً ، فمن المحتمل أنك استخدمتها ، ربما دون أن تدرك ذلك.

لفهم هذا المفهوم تمامًا ، يجب أولاً فهم البرمجة الوظيفية ومفهوم وظائف الدرجة الأولى.

ما هي البرمجة الوظيفية؟

البرمجة الوظيفية هي فرع من الرياضيات المنفصلة ونموذج البرمجة ، حيث يتم تفسير عملية الحساب على أنها حساب قيم الوظائف بالمعنى الرياضي للأخير (على عكس الوظائف مثل الإجراءات الفرعية في البرمجة الإجرائية). [Wikipedia]

وظائف من الدرجة الأولى

First_class

إذا كنت تتعلم JavaScript بالفعل ، فربما تكون قد سمعت أن JavaScript يعامل الدوال ⚙️ ككائنات من الدرجة الأولى. الوظائف في JavaScript هي كائنات ، تمامًا كما هو الحال في لغات البرمجة الوظيفية الأخرى. في JavaScript ، تعتبر الوظائف نوعًا خاصًا من الكائنات. هؤلاء هم Function شاء. على سبيل المثال:

محرر مباشر
النتيجة
Loading...

نحن نعرف الآن ما هي وظائف الدرجة الأولى. يمكنك البدء بوظائف ذات ترتيب أعلى.

وظائف ذات ترتيب أعلى

Higher

هذه هي الدوال - التي تأخذ دالة - كوسيطة أو عودة🔄 دالة كإخراج.

على سبيل المثال ، تم تضمين هذه الوظائف ذات الترتيب الأعلى في اللغة:map() filter() وreduce()

###مثال رقم 1. قم بتغيير الأرقام ". دفع"

Edit_number

لنفترض أن لدينا مجموعة من الأرقام. نريد إنشاء ملف🆕 المصفوفة التي ستحتوي على القيم المضاعفة لأول واحد. دعونا نرى كيف يمكننا حل هذه المشكلة باستخدام دالة الترتيب الأعلى وبدونها.

بدون وظيفة ترتيب أعلى:

محرر مباشر
النتيجة
Loading...

مع وظيفة الترتيب الأعلى map, خيار وحدة التحكم هو:

محرر مباشر
النتيجة
Loading...

يمكننا كتابتها بشكل أقصر باستخدام صيغة "وظيفة السهم":

محرر مباشر
النتيجة
Loading...

مثال# 2. القيم المحسوبة "خريطة"

Math

لنفترض أن لدينا مصفوفة تحتوي على سنوات ميلاد أشخاص مختلفين. نحتاج إلى إنشاء مصفوفة تخزن أعمارهم.

على سبيل المثال: بدون وظيفة ذات ترتيب أعلى (كلاسيكي - من خلالfor() and push() الحلقات)

محرر مباشر
النتيجة
Loading...

مع وظيفة الترتيب الأعلى map:

محرر مباشر
النتيجة
Loading...

نحن نعيد تحميل ملفات 🆕 مجموعة جديدة في سطر واحد من التعليمات البرمجية📟.

مثال رقم 3. بفحص الشرط "()`

Check

لدينا مصفوفة تحتوي على كائنات ذات خصائص: الاسم والعمر. نحتاج إلى إنشاء - مصفوفة تحتوي فقط على البالغين (أي عمر أكبر من أو يساوي 18).

بدون وظيفة ذات ترتيب أعلى (كلاسيكية - من خلالfor () and push () الحلقات):

محرر مباشر
النتيجة
Loading...

مع وظيفة ذات ترتيب أعلى filter بشرط مدمج:

محرر مباشر
النتيجة
Loading...

إنشاء دالة الترتيب الأعلى الخاصة بك

Create

حتى الآن ، نظرنا في الوظائف ذات الترتيب الأعلى المضمنة في اللغة. الآن دعونا ننشئ مثل هذه الوظيفة بأنفسنا ⚙️. تخيل أن JavaScript لا يحتوي على ملفmap طريقة. يمكننا كتابتها بأنفسنا عن طريق إنشاء دالة ذات رتبة أعلى.

لنفترض أن لدينا مصفوفة سلسلة نصية ونريد تحويلها إلى مصفوفة من الأرقام ، حيث يمثل كل عنصر طول العناصر من المصفوفة الأصلية.

محرر مباشر
النتيجة
Loading...

في المثال أعلاه ، أنشأنا وظيفة الترتيب الأعلى الخاصة بنا mapFor(), الذي يأخذ مجموعة arr ووظيفة رد الاتصالfn. تتكرر هذه الوظيفة عبر هذه المجموعة وتستدعي وظيفة رد الاتصالfn داخل newArray.push() لكل تكرار ، حساب عدد الأحرف في كلمات المصفوفة ، يتم وصف خوارزمية الحساب الخاصة بها🖊️ في شكل المتغير الثاني 🔔.

::: إعادة الاتصال علما وظيفة رد الاتصال هي وظيفة يتم تمريرها إلى وظيفة أخرى كوسيطة ، والتي يتم استدعاؤها بعد ذلك عند الانتهاء من إجراء ما.

:::

ال callback وظيفة⚙️ fn يأخذ العنصر الحالي من المصفوفة ويعود🔄 طول العنصر الحالي الذي تم تخزينه الآن فيnewArray. بعدFor() الحلقة تكتمل ، newArray إرجاع طول العناصر في lenArray.

تذكر أن أي خوارزمية ، مهما كانت صغيرة ، تتكون من 3 مراحل:

  • المرحلة 1 - تهيئة المتغيرات 🔔 والوظائف
  • المرحلة 2 - وظيفة الرتبة الأعلى (المنطق)
  • المرحلة 3 - اختتام الجواب.

استنتاج

لقد تعلمنا ما هي الوظائف ذات الترتيب الأعلى وألقينا نظرة على العديد منها المضمنة بالفعل في اللغة👅. تعلمنا أن نخلقها بأنفسنا.

دون الخوض في التفاصيل ، وظائف ذات ترتيب أعلى⚙️ يمكن أن يقال على النحو التالي: هذه هي الوظائف⚙️ يمكن أن تأخذ دالة كوسيطة وحتى إرجاع دالة⚙️.

مشاكل؟

Problem

Write to Discord chat.

أسئلة:

Question

وظائف الدرجة الأولى:

  1. مرافق من الدرجة الأولى
  2. مرافق من الدرجة الخامسة
  3. مرافق من الدرجة الأولى

وظيفة الترتيب الأعلى:

  1. تأخذ دالة كوسيطة أو تُرجع دالة كإخراج
  2. تأخذ وظيفة كوسيطة فقط
  3. إرجاع دالة فقط كناتج

وظيفة الترتيب الأعلى:

  1. من غير الواقعي أن تصنع نفسك
  2. يمكن استخدامها فقط من خلال طريقة مضمنة
  3. يمكنك إنشاء نفسك

لفهم مقدار ما تعلمته في هذا الدرس ، قم بإجراء الاختبار في mobile application من مدرستنا في هذا الموضوع.

JS Camp

الروابط:

  1. Exploring Higher-Order Functions in JavaScript
  2. Article "Higher-order functions in JavaScript"
  3. Expressive Javascript. Article "Higher-order functions"
  4. Code for Teens: The Perfect Beginner's Guide to Programming, Volume 1: Javascript - Jeremy Moritz

المساهمون✨

الشكر يعود إلى هؤلاء الأشخاص الرائعين (emoji key):


Dmitriy K.

📖

Dmitriy Vasilev

💵

Resoner2005

🐛 🎨 🖋

Navernoss

🖋 🐛 🎨

Become a Patron!