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

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

@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 من مدرستنا في هذا الموضوع.

EnglishMoji!

الروابط:

  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

🖋 🐛 🎨

EnglishMoji!