ใครช่วยให้คำอธิบายที่ดีว่า Lambda คืออะไร? เรามีแท็กสำหรับพวกเขาและพวกเขาอยู่ในความลับของคำถาม C # แต่ฉันยังไม่พบคำจำกัดความและคำอธิบายที่ดีในตอนแรก
ใครช่วยให้คำอธิบายที่ดีว่า Lambda คืออะไร? เรามีแท็กสำหรับพวกเขาและพวกเขาอยู่ในความลับของคำถาม C # แต่ฉันยังไม่พบคำจำกัดความและคำอธิบายที่ดีในตอนแรก
คำตอบ:
ฟังก์ชั่นปิดแลมบ์ดาสและไม่ระบุตัวตนไม่จำเป็นต้องเหมือนกัน
ฟังก์ชันนิรนามคือฟังก์ชันใด ๆ ที่ไม่มี (หรืออย่างน้อยก็ต้องมี) ชื่อของตัวเอง
การปิดเป็นฟังก์ชันที่สามารถเข้าถึงตัวแปรที่อยู่ในขอบเขตคำศัพท์เมื่อมีการประกาศแม้ว่าจะหลุดออกจากขอบเขตแล้วก็ตาม ฟังก์ชันที่ไม่ระบุตัวตนไม่จำเป็นต้องปิด แต่เป็นฟังก์ชันส่วนใหญ่และมีประโยชน์น้อยกว่าเมื่อไม่ได้ใช้งาน
แลมด้าคือ .. ยังไม่ได้กำหนดไว้ดีเท่ากับวิทยาศาสตร์คอมพิวเตอร์ หลายภาษาไม่ได้ใช้คำนี้ด้วยซ้ำ แต่พวกเขาจะเรียกมันว่าการปิดหรือฟังก์ชัน anon หรือคิดค้นคำศัพท์ของตนเอง ใน LISP แลมด้าเป็นเพียงฟังก์ชันที่ไม่ระบุตัวตน ใน Python แลมบ์ดาเป็นฟังก์ชันที่ไม่ระบุชื่อที่ จำกัด ไว้เฉพาะนิพจน์เดียว มีอะไรเพิ่มเติมและคุณต้องมีฟังก์ชันที่มีชื่อ Lambdas ปิดในทั้งสองภาษา
"แลมด้า" หมายถึงแคลคูลัสแลมบ์ดาหรือนิพจน์แลมด้าเฉพาะ แลมบ์ดาแคลคูลัสเป็นพื้นสาขาของตรรกะและคณิตศาสตร์ที่เกี่ยวข้องกับฟังก์ชั่นและเป็นพื้นฐานของโปรแกรมปฏิบัติการภาษา
~ วิลเลียมไรลีย์ - ที่ดิน
เป็นเพียงฟังก์ชันที่ไม่ระบุตัวตนที่ประกาศแบบอินไลน์โดยทั่วไปจะกำหนดให้กับผู้รับมอบสิทธิ์เมื่อคุณไม่ต้องการเขียนฟังก์ชันที่สมบูรณ์
ในภาษาเช่นเสียงกระเพื่อม / แบบแผนมักจะส่งผ่านไปอย่างเสรีเป็นพารามิเตอร์ของฟังก์ชัน แต่โดยทั่วไปแล้วสำนวนใน C # จะพบว่า lambdas ใช้สำหรับการประเมินฟังก์ชันแบบขี้เกียจเท่านั้นเช่นเดียวกับใน linq หรือในการทำให้โค้ดการจัดการเหตุการณ์ค่อนข้างเร็วขึ้น
ไม่มีสิ่งที่เรียกว่า 'แลมด้า' ในการเขียนโปรแกรม ขึ้นอยู่กับภาษา ฯลฯ
ในระยะสั้นโดยปกติแล้วภาษาที่ "มี lambdas" จะใช้คำนี้สำหรับฟังก์ชันที่ไม่ระบุตัวตนหรือในบางกรณีก็คือการปิด เช่นนั้นใน Ruby:
f = lambda { return "this is a function with no name" }
puts f.call
เพื่อตอบสนองต่อคำตอบก่อนหน้านี้:
- สิ่งสำคัญเกี่ยวกับฟังก์ชันที่ไม่ระบุชื่อไม่ใช่ว่าพวกเขาไม่ต้องการชื่อ
-Closures เป็นแนวคิดที่แยกจากกัน
- บทความวิกิพีเดียขนาดมหึมาไม่ได้ทำให้สิ่งนี้ชัดเจนขึ้น
นี่คือคำตอบของฉันใน 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
คลิปจาก wikipedia: http://en.wikipedia.org/wiki/Lambda#Lambda.2C_the_word
ในภาษาการเขียนโปรแกรมเช่น Lisp และ Python แลมบ์ดาเป็นตัวดำเนินการที่ใช้เพื่อแสดงถึงฟังก์ชันที่ไม่ระบุตัวตนหรือการปิดตามการใช้แคลคูลัสแลมบ์ดา