คำถามติดแท็ก yield

อัตราผลตอบแทนคือ (1) คีย์เวิร์ดที่อำนวยความสะดวกในการสร้างฟังก์ชันเครื่องกำเนิดไฟฟ้า (2) คำสั่ง Ruby เพื่อถ่ายโอนการควบคุมจากโครูทีนหนึ่งไปยังอีกตัวหนึ่ง (3) คำสั่ง Java ที่ใช้เพื่อให้ได้ค่าจากนิพจน์สวิตช์

8
Python: การแสดงออกของเครื่องกำเนิดเทียบกับอัตราผลตอบแทน
ใน Python มีความแตกต่างระหว่างการสร้างวัตถุเครื่องกำเนิดไฟฟ้าผ่านนิพจน์ตัวสร้างกับการใช้คำสั่งผลตอบแทนหรือไม่ ใช้ผลผลิต : def Generator(x, y): for i in xrange(x): for j in xrange(y): yield(i, j) การใช้นิพจน์เครื่องกำเนิดไฟฟ้า : def Generator(x, y): return ((i, j) for i in xrange(x) for j in xrange(y)) ฟังก์ชันทั้งสองจะส่งคืนอ็อบเจ็กต์ตัวสร้างซึ่งสร้างทูเปิลเช่น (0,0), (0,1) เป็นต้น ข้อดีของข้อใดข้อหนึ่ง? ความคิด? ขอบคุณทุกๆคน! มีข้อมูลดีๆมากมายและข้อมูลอ้างอิงเพิ่มเติมในคำตอบเหล่านี้!

5
ใน C # เหตุใดวิธีการที่ไม่ระบุชื่อจึงไม่มีคำสั่งผลตอบแทน
ฉันคิดว่ามันจะดีถ้าทำอะไรแบบนี้ (โดยที่แลมด้าให้ผลตอบแทน): public IList<T> Find<T>(Expression<Func<T, bool>> expression) where T : class, new() { IList<T> list = GetList<T>(); var fun = expression.Compile(); var items = () => { foreach (var item in list) if (fun.Invoke(item)) yield return item; // This is not allowed by C# } return items.ToList(); } อย่างไรก็ตามฉันพบว่าฉันไม่สามารถใช้ผลตอบแทนในวิธีที่ไม่ระบุตัวตนได้ ฉันสงสัยว่าทำไม …

5
ผลตอบแทนหรือผลตอบแทนจากฟังก์ชั่นที่เรียกกำเนิด?
ฉันมีตัวกำเนิดgeneratorและวิธีการอำนวยความสะดวกให้กับมัน - generate_all. def generator(some_list): for i in some_list: yield do_something(i) def generate_all(): some_list = get_the_list() return generator(some_list) # <-- Is this supposed to be return or yield? ควรgenerate_all returnหรือyield? ฉันต้องการให้ผู้ใช้ทั้งสองวิธีใช้เช่นกัน for x in generate_all() ควรเท่ากับ some_list = get_the_list() for x in generate(some_list)

2
ใน PHP: อะไรคือความแตกต่างระหว่าง "ผลตอบแทน", "ผลผลิต", "ผลผลิตจาก" และการผสมทั้งผลผลิตและผลตอบแทนในฟังก์ชั่นเดียวกัน?
ความแตกต่างระหว่างreturnและyieldดูเหมือนชัดเจนจนกระทั่งฉันพบว่ามีyield fromและความเป็นไปได้ที่จะรวมทั้งreturnและyieldในฟังก์ชั่นเดียวกัน! ความเข้าใจของฉันreturnคือว่าทุกอย่างหลังจากไม่ได้ดำเนินการใช่มั้ย อย่างไรก็ตาม: function generate(): iterable { return [1, 2, 3]; } foreach (generate() as $value) { echo $value; } ผลิต: "123" แต่ต่อไปนี้: function generate(): iterable { return [1, 2, 3]; yield; } foreach (generate() as $value) { echo $value; } ไม่ทำอะไรเลย! นั่นหมายความว่ามีการผลิตผลหรือไม่ นี่เป็นข้อบกพร่องหรือไม่?
10 php  return  generator  yield 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.