سؤال

أنا لا حقا يحصل تعبيرات لامدا.على الرغم من وجودهما منذ أيام ALGOL، إلا أنني لم أبدأ بالسماع عنهما إلا مؤخرًا، عندما أصبحت Python وRuby مشهورتين جدًا.الآن بعد أن حصل C# على => في بناء الجملة، يتحدث الأشخاص في عالمي (.NET) عن تعبيرات لامدبا أكثر فأكثر.

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

هل يمكنك عرض أمثلة لكيفية حل المشكلات باستخدام تعبيرات لامدا، بتنسيق قبل وبعد؟أي لغة أمرية جيدة، ولكن C# سيكون من الأسهل بالنسبة لي أن أفهمها.

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

المحلول

وفي الأساس بقدر ما يتعلق الأمر C #، وتعبيرات لامدا هي وسيلة سهلة لإنشاء مندوب (أو شجرة التعبير، ولكن دعونا نترك هؤلاء جانبا في الوقت الحالي).

في C # 1 نحن يمكن أن تخلق فقط الحالات مندوب من الطرق العادية. في C # 2 حصلنا على طرق مجهولة. في C # 3 حصلنا على تعبيرات لامدا، والتي هي مثل طرق مجهولة أكثر إيجازا.

وانهم موجزة خاصة عندما تريد التعبير عن بعض المنطق الذي يأخذ قيمة واحدة وإرجاع قيمة. على سبيل المثال، في سياق LINQ:

                       // Only include children - a predicate
var query = dataSource.Where(person => person.Age < 18) 
                       // Transform to sequence of names - a projection
                      .Select(person => person.Name);

وهناك مناقشة وافية لل- جنبا إلى جنب مع الجوانب الأخرى - في مقالتي على الإغلاق .

نصائح أخرى

والأجوبة على هذا السؤال قد يكون من المفيد لك.

وظائف امدا هي وظائف مجهولة.

وعلى سبيل المثال، في بيثون، وتريد أن يتضاعف كل العناصر في القائمة. هناك الكثير جدا ثلاث طرق للقيام بذلك:

وقائمة تعبيرات:

[2*x for x in list]

وظيفة صريحة:

def double(x):
    return 2*x
map(double, list) # iirc

ومع lambdas:

double = lambda x : 2*x
map(double, list)

وهكذا، لامدا في معظم لغات هي مجرد وسيلة لتجنب الحمل النحوي إنشاء وظيفة جديدة.

وهذا هو أحد التفسيرات أفضل رأيت من كيفية فهم الأفكار الكبيرة في استخدام تعبيرات لامدا في C #:

HTTP: / /www.developingfor.net/c-30/upgrade-your-c-skills-part-3-lambda-expressions.html

وكان استخدامي الرئيسي للتعبيرات لامدا في. NET عند العمل مع القوائم. باستخدام التعبير امدا يمكنك بناء استعلام على قائمة بطريقة مماثلة لهل بناء عبارة SQL للبحث في جدول قاعدة البيانات.

تعبير لامدا هو قيمة وظيفية (بنفس المعنى الذي تكون فيه "int" و"string" قيمتين).وهذا يعني أنه من الممكن

  • تعريف متغير يحمل تعبير لامدا (وهذا هو نفس تعريف دالة)
  • إرجاع تعبير لامدا من طريقة أو وظيفة
  • إرسال تعبير لامدا كوسيطة إلى دالة أو أسلوب

ألقِ نظرة على وظائف مثل الخريطة أو الفلتر أو الطي (بأي لغة وظيفية) لمعرفة كيفية استخدام تعبيرات لامدا كوسيطات لوظائف أخرى.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top