اذهب إلى المحتوى
  • 0

ما هى ال higher order function ؟

Essam Abdelrahman

السؤال

Recommended Posts

  • 1

شرح Higher-Order Functions

في للغات البرمجه ، الدالة عالية المستوي (Higher-order function) هي دالة تأخذ إما دالة واحدة أو أكثر كمعاملات، أو تقوم بإرجاع دالة كنتيجة لها.

بشكل أساسي، تعمل الدالة عالية المستوي على الدوال الأخرى، سواءً بتطبيقها لأداء مهام معينة أو بإنشاء دوال جديدة تتصف بسلوك مخصص. تعتبر الدوال عالية الرتبة مفهومًا قويًا في للغات البرمجه وبرمجة الدوال، حيث تمكن من كتابة كود أكثر اختصارًا، وتجزئة الكود إلى وحدات صغيرة قابلة لإعادة الاستخدام، والتعبير بشكل أفضل عن الأفكار والمنطق في البرنامج.


خصائص Higher-Order Functions

1. Function as an Argument (الدالة كمعامل):

في بعض الأحيان، يمكن للدوال أن تأخذ دوالًا أخرى كمعاملات. يُشار إليها في كثير من الأحيان باسم "دوال الرد الفعلية" (callback functions).

يتم استخدام هذه الدوال الفعلية لمهام مثل معالجة البيانات، أو تصفية البيانات، أو التعامل مع الأحداث (events).

2. Function as a Return Value (الدالة كقيمة مُرجعة):

يمكن للدوال عالية الرتبة أن تُرجع دوالًا أخرى، مما يسمح بإنشاء دوال متخصصة مُصممة خصيصًا لمهام محددة.

3. Abstraction (التجريد):

تقوم الدوال عالية الرتبة بتجريد النماذج والعمليات الشائعة، مما يعزز إعادة استخدام الكود والتجزئة إلى وحدات صغيرة قابلة لإعادة الاستخدام والتعامل معها بشكل منفصل.

4. Composition (التركيب):

يمكن توصيل عدة دوال عالية المستوي لإنشاء تحويلات بيانات معقدة أو لمعالجة البيانات.

امثله علي Higher-Order Functions

map Higher-Order Function
 

# مثال على دالة map لتضاعف كل عنصر في القائمة
numbers = [1, 2, 3, 4, 5]
doubled_numbers = list(map(lambda x: x * 2, numbers))
print(doubled_numbers)  # Output: [2, 4, 6, 8, 10]

filter Higher-Order Function

 

# مثال على دالة filter لاختيار الأعداد الزوجية من القائمة
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # Output: [2, 4, 6, 8, 10]

sorted Higher-Order Function
 

# مثال على دالة sorted لترتيب الأسماء ترتيبا أبجديا
names = ["Alice", "Bob", "Charlie", "David", "Eve"]
sorted_names = sorted(names)
print(sorted_names)  # Output: ['Alice', 'Bob', 'Charlie', 'David', 'Eve']

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

مصطلح يطلق على دوال تاخذ دوال أخرى كمعاملات parameters  او ترجعها كقيمة 

// دالة تأخذ دالة أخرى كمعامل 
function operate(func, x, y) {
    return func(x, y);
}

function add(x, y) {
    return x + y;
}



const resultAdd = operate(add, 3, 4);  // Adds 3 and 4

 

// دالة ترجع دالة أخرى كقيمة
function multiplier(factor) {
    return function (number) {
        return number * factor;
    };
}

const double = multiplier(2);
const resultDouble = double(5); //return 10

 

تم التعديل في بواسطة Hossam Mohamed15
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

سوف اقوم بشرحها  لك عن طريق مثال:

تخيل أن الدوال هي مثل الأدوات في علبة أدوات البرمجة. لكن في حالة الدوال ذات النظام العالي، يمكنك أن تتعامل مع هذه الأدوات بطريقة أكثر مرونة وقوة. بدلاً من أن تكون مقيدًا بطريقة معينة لاستخدام الأدوات، يمكنك استخدام هذه الأدوات لبناء أدوات أخرى أو حتى تمريرها إلى أدوات أخرى لتفعيل مهام معينة.

لنفهم ذلك بمثال بسيط. لنفترض أن لديك دالة تُسمى "ضرب_في_اثنين" تأخذ عددًا وتضربه في 2 وترجع الناتج. في البرمجة التقليدية، ستبدو الدالة بهذا الشكل:

def multiply_by_two(number):
    return number * 2

def apply_operation(number, operation):  # هذه هى high oreder function
    return operation(number)

result = apply_operation(5, multiply_by_two)
print(result)  #الناتج سيكون 10

هنا ايضا تم تمرير الدالة multiply_by_two كمدخل لدالة apply_operation، والتي قامت بتنفيذ الضرب على الرقم 5.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

بالاضافة لتعليقات الأصدقاء
ال  higher order function هى الfunction التى تأخذ function أخري أو أكثر كمعاملات لها أو ترجع function

function greaterThan(n) {
return m => m > n;
}
let greaterThan10 = greaterThan(10);
console.log(greaterThan10(11));
// → true


ويوجد functions  في الجافسكربت هى  higher order function  جاهزة لحل مشكلات متكررة مثل ال
1 - ()map 

// جمع 10 على كل عنصر فى المصفوفة
const arr = [1, 2, 3, 4, 5];
const output = arr.map((num) => num += 10)
console.log(arr); // [1, 2, 3, 4, 5]
console.log(output); // [11, 12, 13, 14, 15]

2 - ()filter
 

const users = [
    {firstName: 'John', lastName: 'Doe', age: 25},
    {firstName: 'Jane', lastName: 'Doe', age: 30},
    {firstName: 'Jack', lastName: 'Doe', age: 35},
    {firstName: 'Jill', lastName: 'Doe', age: 40},
    {firstName: 'Joe', lastName: 'Doe', age: 45},
]

// ايجاد المستخدمين أعمارهم فوق 30
const output = users.filter(({age}) => age > 30)
console.log(output); // [{firstName: 'Jack', lastName: 'Doe', age: 35}, {firstName: 'Jill', lastName: 'Doe', age: 40}, {firstName: 'Joe', lastName: 'Doe', age: 45}]

 

تم التعديل في بواسطة Mustafa Mahmoud7
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...