ทำไมการใช้ตัวดำเนินการที่ได้รับมอบหมายหรือลูปหมดกำลังใจในการเขียนโปรแกรมใช้งานได้?
หากฟังก์ชั่นของฉันมีคุณสมบัติตรงตามข้อกำหนดสองข้อข้างล่างฉันเชื่อว่าฟังก์ชั่นSum จะคืนค่าการสรุปของรายการในรายการที่รายการประเมินเป็นจริงสำหรับเงื่อนไขที่กำหนดมีคุณสมบัติเหมาะสมที่จะเรียกว่าเป็นฟังก์ชันบริสุทธิ์ใช่ไหม 1) สำหรับชุด i / p ที่กำหนดจะส่งคืน o / p เดียวกันโดยไม่คำนึงถึงเวลาที่เรียกใช้ฟังก์ชัน 2) มันไม่มีผลข้างเคียงใด ๆ public int Sum(Func<int,bool> predicate, IEnumerable<int> numbers){ int result = 0; foreach(var item in numbers) if(predicate(item)) result += item; return result; } ตัวอย่าง: Sum(x=>x%2==0, new List<int> {1,2,3,4,5...100}); เหตุผลที่ฉันถามคำถามนี้เพราะฉันเห็นเกือบทุกที่ที่ผู้คนแนะนำให้หลีกเลี่ยงการมอบหมายและลูปเพราะมันเป็นรูปแบบการเขียนโปรแกรมที่จำเป็น ดังนั้นสิ่งที่สามารถไปผิดกับตัวอย่างข้างต้นซึ่งทำให้การใช้ลูปและผู้ประกอบการที่ได้รับมอบหมายในบริบทของการเขียนโปรแกรมฟังก์ชั่น?