سؤال

هل من الممكن تمرير إشارة إلى دالة إلى دالة أخرى في F#؟على وجه التحديد، أود تمرير وظائف لامدا مثل

فو(متعة x -> x ** 3)

وبشكل أكثر تحديدًا، أريد أن أعرف كيف يمكنني الإشارة إلى الوظيفة التي تم تمريرها في وظيفة كتبتها بنفسي.

هل كانت مفيدة؟

المحلول

نعم هذا ممكن.ال يدوي لديه هذا المثال:

> List.map (fun x -> x % 2 = 0) [1 .. 5];;

val it : bool list
= [false; true; false; true; false]

نصائح أخرى

الوظائف مواطنون من الدرجة الأولى في F #.لذلك يمكنك تمريرها تمامًا كما تريد.

إذا كان لديك وظيفة مثل هذا:

let myFunction f =
    f 1 2 3

و F هي الدالة ثم القيمة المرجعة لـ myFunction يكون F تطبق على 1،2 و 3.

يعمل تمرير دالة لامدا إلى دالة أخرى على النحو التالي:

لنفترض أن لدينا وظيفة تافهة خاصة بنا على النحو التالي:

let functionThatTakesaFunctionAndAList f l = List.map f l

يمكنك الآن تمرير دالة lambda وقائمة إليها:

functionThatTakesaFunctionAndAList (fun x -> x ** 3.0) [1.0;2.0;3.0]

داخل وظيفتنا الخاصة functionThatTakesaFunctionAndAList يمكنك فقط الرجوع إلى وظيفة لامدا باسم f لأنك اتصلت بالمعلمة الأولى f.

نتيجة استدعاء الوظيفة هي بالطبع:

float list = [1.0; 8.0; 27.0]
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top