"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني تنفيذ وظيفة Currying في Go؟

كيف يمكنني تنفيذ وظيفة Currying في Go؟

تم النشر بتاريخ 2024-11-20
تصفح:550

How Can I Implement Function Currying in Go?

وظيفة الكاري في Go Lang

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

التطبيق الجزئي في Go

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

وظيفة Currying لـ Go

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

على سبيل المثال، يوضح مقتطف التعليمات البرمجية التالي كيفية تنفيذ الكاري لوظيفة "إضافة":

package main

import "fmt"

func main() {
    mkAdd := func(a int) func(b int) int {
        return func(b int) int {
            return a   b
        }
    }

    add3 := mkAdd(3)
    fmt.Println(add3(5)) // Output: 8
}

في هذا المثال، تأخذ الدالة mkAdd عددًا صحيحًا a كمعلمة لها وترجع إغلاقًا يأخذ عددًا صحيحًا b كمعلمة لها. يضيف الإغلاق a وb معًا ويعيد النتيجة. يتم تعيين الإغلاق الذي تم إنشاؤه للمتغير add3 عن طريق استدعاء mkAdd(3)، مما يعني أن add3 سيضيف 3 إلى أي رقم تم تمريره إليه. مع مفاهيم التطبيق الجزئي والوظيفة الكاري، يمكنك إنشاء وظائف مرنة وقابلة لإعادة الاستخدام في Go. تذكر أنه على الرغم من أن Go لا يحتوي على دعم مدمج للتطبيق الجزئي، إلا أنه يمكن تنفيذه يدويًا لتحقيق وظائف مماثلة.

أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3