Window.pipedriveLeadboosterConfig = { القاعدة: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', الإصدار: 2, } ؛(الدالة () { var w = نافذة إذا كان (w.LeadBooster) { console.warn('LeadBooster موجود بالفعل') } وإلا { { w.LeadBooster = { q: [], على: دالة (ن، ح) { { هذا.q.push({ t: 'o'، n: n، n: n، h: h }) }, الزناد: الدالة (n) { هذا.q.push({ t: 't'، n: n: n }) }, } } })() البرمجة الوظيفية في JavaScript الجزء 2 - المدمجات - The Codest
The Codest
  • نبذة عنا
  • الخدمات
    • تطوير البرمجيات
      • تطوير الواجهة الأمامية
      • تطوير الواجهة الخلفية
    • Staff Augmentation
      • مطورو الواجهة الأمامية
      • مطورو الواجهة الخلفية
      • مهندسو البيانات
      • مهندسو السحابة
      • مهندسو ضمان الجودة
      • أخرى
    • استشاري
      • التدقيق والاستشارات
  • الصناعات
    • التكنولوجيا المالية والمصرفية
    • E-commerce
    • أدتك
    • التكنولوجيا الصحية
    • التصنيع
    • الخدمات اللوجستية
    • السيارات
    • إنترنت الأشياء
  • القيمة مقابل
    • CEO
    • CTO
    • مدير التوصيل
  • فريقنا
  • دراسات الحالة
  • اعرف كيف
    • المدونة
    • اللقاءات
    • ندوات عبر الإنترنت
    • الموارد
الوظائف تواصل معنا
  • نبذة عنا
  • الخدمات
    • تطوير البرمجيات
      • تطوير الواجهة الأمامية
      • تطوير الواجهة الخلفية
    • Staff Augmentation
      • مطورو الواجهة الأمامية
      • مطورو الواجهة الخلفية
      • مهندسو البيانات
      • مهندسو السحابة
      • مهندسو ضمان الجودة
      • أخرى
    • استشاري
      • التدقيق والاستشارات
  • القيمة مقابل
    • CEO
    • CTO
    • مدير التوصيل
  • فريقنا
  • دراسات الحالة
  • اعرف كيف
    • المدونة
    • اللقاءات
    • ندوات عبر الإنترنت
    • الموارد
الوظائف تواصل معنا
السهم الخلفي العودة إلى الوراء
2022-06-07
تطوير البرمجيات

البرمجة الوظيفية في JavaScript الجزء 2 - المدمجات

The Codest

بافيل جيد

Vue.js مطور Vue.js

هذا هو الجزء الثاني من سلسلة مقالاتنا المخصصة لقوة البرمجة الوظيفية في JavaScript. راجع هذه المقالة لتوسيع معرفتك عن المدمجات.

مقدمة في المجمّعات

المدمجات هي دالة ذات مستوى أعلى تسمح لك بدمج الدوال أو المتغيرات أو المدمجات الأخرى. عادةً لا تحتوي على تعريفات للمتغيرات الخاصة بها أو منطق العمل. هم الوحيدون الذين يقومون بمسح عنصر التحكم في برنامج الدالة.

سأحاول في هذا المقال تغطية بعض منها:

  • الحنفية
  • الكاري
  • الأنابيب/التركيب
  • شوكة
  • التناوب
  • التسلسل

الحنفية

المُدمج مفيد جدًا للدوال التي لا تُعيد شيئًا. فهي تأخذ الدالة التي تذهب إليها المعلمة ثم يتم إرجاعها.

إعلان

const tap = (fn) => (قيمة) => {
fn(القيمة);
إرجاع القيمة;
};

مثال حتمي

تشكل [العناصر، مجموعة العناصر] = حالة الاستخدام()() => [])

أكسيوس
.get('http://localhost')
.then({ data } => {
setItems(البيانات)
console.log(data)
onLoadData(البيانات)
.})).ثم(...) // إرجاع غير معرّف - تم تعديل البيانات الموجودة في الوعد

مثال توضيحي

تشكل [العناصر، مجموعة العناصر] = حالة الاستخدام()() => [])

أكسيوس
.get('http://localhost')
.ثم(({البيانات })) => البيانات)
.ثم (اضغط (setItems))) // (البيانات) => { setItems(البيانات)؛ إرجاع البيانات }.
.then(tap(console.log))) // واحد ثم = دالة واحدة = مسؤولية واحدة
.ثم(صنبور(onLoadData))
.ثم(...) // لا يزال الوصول إلى البيانات الأصلية
// من السهل الحفاظ على مبدأ الفتح/الإغلاق

الكاري

يقسم وسيطات الدالة ويجعل من الممكن استدعاؤها بالتتابع.

إعلان

const curry = (fn) => {
const curried = (...args) => {
إذا (fn.length.= == args.length){ {
إرجاع curried.bind(فارغ، ...args)
}
إرجاع fn(...args);
};

إرجاع curried

};


مثال على ذلك

const curry = (fn) => {
const curried = (...args) => {
إذا (fn.length.= == args.length){ {
إرجاع curried.bind(فارغ، ...args)
}
إرجاع fn(...args);
};

إرجاع curried

};
المجموع = (أ، ب، ج) => أ + ب + ج) => أ + ب + ج

const currySum = كاري(مجموع)
/*
المكالمات الممكنة
مجموع الكاري(أ)(ب)(ج),
مجموع الكاري(أ)(ب، ج),
مجموع الكاري(أ، ب)(ج),
مجموع الكاري (أ، ب، ج)
*/

مجموع الكاري(1) (1) // (ب، ج) => 1 + أ + ب أو (ب) => (ج) => 1 + أ + ب
مجموع الكاري(5)(10)(10) // (ج) => 5 + 10 + ب
مجموع الكاري (5، 10) // (ج) => 5 + 10 + ب + 10 + ب
مجموع الكاري(5)(10)(20) // (ج) // 35
مجموع الكاري(5، 10)(20) // (ج) => 5 + 10 (ب)(20) // 35
مجموع الكاري(5)(5)(10، 20) // 35

const divideBy = كاري((a, b) => b / a)
const multipleBy = كاري((a, b) => a * b)

const divideByTwo = divideBy(2)
قسمة باي اثنين(10) // يُرجع 5

يشكل multipeByFive = multipeByBy(5)
مضروب في خمسة(10) // الإرجاع 50

الأنابيب/التركيب

من خلال التركيب، من الممكن تمرير البيانات من دالة إلى أخرى. من المهم أن تأخذ الدوال نفس عدد الوُسطاء. الفرق بين الأنبوب والتركيب هو أن الأول يستدعي الدالة من أولها إلى آخرها، أما التركيب فيستدعيها من النهاية.

إعلان

const pipe = (...fns) => (القيمة، ...args) =>
fns.reduce((v, f, i) => (v, f, i) =>
i === 0
? f(v, ...args)
: f(v),
القيمة);

const compose = (...fns) => (القيمة، ...args) =>
fns.reduceRight((v, f, i) => (v, f, i) =>
i === (طول fns.length - 1)
؟ f(v, ...args)
: f(v),
القيمة);
const pipe = (...fns) => (القيمة، ...args) =>
fns.reduce((v, f, i) => (v, f, i) =>
i === 0
? f(v, ...args)
: f(v),
القيمة);

const compose = (...fns) => (القيمة، ...args) =>
fns.reduceRight((v, f, i) => (v, f, i) =>
i === (طول fns.length - 1)
؟ f(v, ...args)
: f(v),
القيمة);

مثال حتمي

الجيب الجيبية = (قيمة) => Math.sin(val * Math.PI / 180) // غير قابل للقراءة
 جيب(90) // يُرجع 1

مثال توضيحي

الجيب الثابت = أنبوب(
اضرب ب(Math.PI) // ↓ val * Math.PI
قسمة ب(180)، // ↓ val * Math.PI / 180
Math.sin, // ↓ Math.sin(val * Math.PI / 180)
)

الجيب = التركيب(
Math.sin, // ↑ ↑ Math.sin(val * Math.PI / 180)
قسمة ب(180)، // ↑ val* Math.PI / 180
اضرب ب(Math.PI) // ↑ ↑ val * Math.PI
)

الجيب(90) // إرجاع 1

شوكة

أداة دمج الشوكة مفيدة في الحالات التي تريد فيها معالجة قيمة ما بطريقتين ودمج النتيجة.

إعلان

الشوكة الثابتة = (الوصل، fn1، fn2) => (القيمة) => الوصلة (fn1(القيمة)، fn2(القيمة));

مثال على ذلك

يشكل الطول = (مصفوفة) => array.length
يشكل المجموع = (صفيف) => array.reduce((a, b) => a + b, 0)
تشكل القسمة = (أ، ب) => أ / ب

const arithmeticAverage = شوكة (قسمة، مجموع، طول)

المتوسط الحسابي([5، 3، 3، 2، 8، 4، 2]) // يُرجع 4

التناوب

يأخذ هذا المدمج دالتين ويُرجع نتيجة الدالة الأولى إذا كانت صحيحة. وإلا فإنها تُرجع نتيجة الدالة الثانية.

إعلان

الرمز>القانون البديل = (fn، orFn) => (القيمة) => fn(القيمة) ||أو orFn(القيمة)

مثال على ذلك

const users = [{
uuid: '123e4567-e89b-12d3-a456-426655440000',
الاسم: 'ويليام'
}]

const findUser = ({ uuid: uuid: عمليات البحثUuid }) =>) =>
users.find(({ uuid }) => uuid === searchesUuid))

const newUser = البيانات => ({ ...البيانات، uuid: uuid() // إنشاء uuid جديد })

const findOrCreate = alt(findUser, newUser)

findOrCreate({ uuid: '123e4567-e8967-e89b-12d3-a456-426655440000' }) // إرجاع كائن ويليام
findOrCreate({الاسم: 'John'}) // إرجاع كائن John مع معرف uuid جديد

التسلسل

يقبل العديد من الدوال المستقلة ويمرر نفس المعلمة لكل منها. عادةً لا تُرجع هذه الدوال أي قيمة.

إعلان

مسلسل التسلسل التسلسلي = (...fns) => (val) => fns.forEach(fn => fn(val)))

مثال على ذلك

const appendUser = (المعرف) => ({الاسم }) => { {
document.getElementByIlement(id).innerHTML = الاسم
}

const printUserContact = أنبوب(
findOrCreate، // إرجاع المستخدم
seq(
appendUserUser('#contact')، // مستخدم => باطل
console.log، // مستخدم => باطل
onContactUpdate // مستخدم => باطل
)
)

طباعةUserContact(userData)
راية التعاون

مقالات ذات صلة

تطوير البرمجيات

إنشاء تطبيقات ويب مستقبلية: رؤى من فريق خبراء The Codest

اكتشف كيف تتفوق شركة The Codest في إنشاء تطبيقات ويب تفاعلية قابلة للتطوير باستخدام أحدث التقنيات، وتقديم تجارب مستخدم سلسة عبر جميع المنصات. اكتشف كيف تقود خبرتنا التحول الرقمي والأعمال التجارية...

ذا كوديست
تطوير البرمجيات

أفضل 10 شركات لتطوير البرمجيات في لاتفيا

تعرّف على أفضل شركات تطوير البرمجيات في لاتفيا وحلولها المبتكرة في أحدث مقالاتنا. اكتشف كيف يمكن لهذه الشركات الرائدة في مجال التكنولوجيا المساعدة في الارتقاء بأعمالك.

thecodest
الحلول المؤسسية وحلول التوسعة

أساسيات تطوير برمجيات جافا: دليل للاستعانة بمصادر خارجية بنجاح

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

thecodest
تطوير البرمجيات

الدليل الشامل للاستعانة بمصادر خارجية في بولندا

إن الطفرة في outsourcing في بولندا مدفوعة بالتقدم الاقتصادي والتعليمي والتكنولوجي، مما يعزز نمو تكنولوجيا المعلومات والمناخ الملائم للأعمال.

ذا كوديست
الحلول المؤسسية وحلول التوسعة

الدليل الكامل لأدوات وتقنيات تدقيق تكنولوجيا المعلومات

تضمن عمليات تدقيق تكنولوجيا المعلومات وجود أنظمة آمنة وفعالة ومتوافقة. تعرف على المزيد حول أهميتها من خلال قراءة المقال كاملاً.

The Codest
ياكوب جاكوب جاكوبوفيتش CTO وشريك مؤسس CTO

اشترك في قاعدة معارفنا وابقَ على اطلاع على آخر المستجدات في قطاع تكنولوجيا المعلومات.

    نبذة عنا

    The Codest - شركة دولية لتطوير البرمجيات لها مراكز تقنية في بولندا.

    المملكة المتحدة - المقر الرئيسي

    • المكتب 303 ب، 182-184 شارع هاي ستريت نورث E6 2JA
      لندن، إنجلترا

    بولندا - مراكز التكنولوجيا المحلية

    • مجمع مكاتب فابريتشنا المكتبي، أليجا
      بوكوجو 18، 31-564 كراكوف
    • سفارة الأدمغة، كونستروكتورسكا
      11, 02-673 02-673 وارسو، بولندا

      The Codest

    • الصفحة الرئيسية
    • نبذة عنا
    • الخدمات
    • دراسات الحالة
    • اعرف كيف
    • الوظائف
    • القاموس

      الخدمات

    • استشاري
    • تطوير البرمجيات
    • تطوير الواجهة الخلفية
    • تطوير الواجهة الأمامية
    • Staff Augmentation
    • مطورو الواجهة الخلفية
    • مهندسو السحابة
    • مهندسو البيانات
    • أخرى
    • مهندسو ضمان الجودة

      الموارد

    • حقائق وأساطير حول التعاون مع شريك خارجي لتطوير البرمجيات
    • من الولايات المتحدة الأمريكية إلى أوروبا: لماذا تقرر الشركات الأمريكية الناشئة الانتقال إلى أوروبا؟
    • مقارنة مراكز تطوير التكنولوجيا في الخارج: تك أوفشور أوروبا (بولندا)، آسيان (الفلبين)، أوراسيا (تركيا)
    • ما هي أهم التحديات التي تواجه CTOs ومديري تكنولوجيا المعلومات؟
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • شروط استخدام الموقع الإلكتروني

    جميع الحقوق محفوظة © 2025 بواسطة The Codest. جميع الحقوق محفوظة.

    arArabic
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek arArabic