سؤال

هل يمكن لأي شخص أن يقدم وصفًا جيدًا لماهية لامدا؟لدينا علامة خاصة بهم وهم على أسرار سؤال C#، لكن لم أجد بعد تعريفًا جيدًا وشرحًا لما هم عليه في المقام الأول.

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

المحلول

عمليات الإغلاق واللامدا والوظائف المجهولة ليست بالضرورة نفس الشيء.

الوظيفة المجهولة هي أي وظيفة ليس لها (أو على الأقل لا تحتاج) اسمها الخاص.

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

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

نصائح أخرى

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

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

~ ويليام رايلي لاند

إنها مجرد وظيفة مجهولة تم الإعلان عنها في السطر، ويتم تعيينها عادةً لمفوض عندما لا ترغب في كتابة وظيفة كاملة.

في لغات مثل lisp/scheme، غالبًا ما يتم تمريرها بحرية تامة كمعلمات دالة، ولكن المصطلح في C# عادةً ما يجد استخدام lambdas فقط للتقييم البطيء للوظائف، كما هو الحال في linq، أو لجعل كود التعامل مع الأحداث أكثر إيجازًا بعض الشيء.

لا يوجد حقًا شيء اسمه "لامدا" في البرمجة.يعتمد ذلك على اللغة وما إلى ذلك.

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

f = lambda { return "this is a function with no name" }
puts f.call

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

وإليك إجابتي في 3 أجزاء:
1.لامدا هي وظيفة وهي أيضًا تعبير.هذا هو الشيء المهم.
2.تضيف العديد من اللغات التي تنفذ ما يسمى بـ "lambdas" بعضًا منها التجميل اللغوى لجعل كتابة هذه الوظائف القصيرة أسهل وأسرع، ولكن هذا غير مطلوب.
3.قد تتطلب بعض اللغات وجود لامدا أي آثار جانبية.سيكون ذلك لامدا أكثر نقاءً بالمعنى الوظيفي.

عندما تكون الوظيفة تعبيرًا، فهي "مواطن من الدرجة الأولى" داخل اللغة.أستطيع أن أفعل كل الأشياء المهمة معها:

x = lambda(){ return "Hello World"; }

doit( 1, 2, lambda(a,b){ return a > b; }, 3 )

x = (lambda(a){ return a+1; }) + 5  // type error, not syntax error

(lambda(a,b){ print(a); log(b); })( 1, 2 )  // () is valid operator here

مقتطف من ويكيبيديا: http://en.wikipedia.org/wiki/Lambda#Lambda.2C_the_word

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

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