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

foreach เป็นโครงสร้างวนรอบที่เรียกใช้งานโค้ดที่กำหนดสำหรับแต่ละองค์ประกอบในรายการ / คอลเลกชัน / อาร์เรย์ ในทางตรงกันข้ามกับ for for loop วง foreach ไม่จำเป็นต้องใช้ coder เพื่อรักษาตัวแปรตัวนับเพื่อหลีกเลี่ยงข้อผิดพลาดแบบ off-by-one (fencepost) ขอแนะนำให้ใช้เมื่อจำเป็นต้องใช้การวนซ้ำอย่างง่ายทั่วทั้ง array / list / collection .

12
เครื่องหมายโคลอน (:) ทำอะไรได้บ้าง?
เห็นได้ชัดว่าเครื่องหมายจุดคู่ถูกใช้ใน Java หลายวิธี ใครช่วยอธิบายว่ามันทำอะไร? ตัวอย่างเช่นที่นี่: String cardString = ""; for (PlayingCard c : this.list) // <-- { cardString += c + "\n"; } คุณจะเขียนfor-eachลูปนี้ด้วยวิธีอื่นอย่างไรเพื่อไม่ให้รวมเข้าด้วยกัน:?

8
javascript forEach ใช้อะไรได้บ้าง (แผนที่นั้นไม่สามารถทำได้)
ข้อแตกต่างเดียวที่ฉันเห็นในแผนที่และ foreach mapคือส่งคืนอาร์เรย์และforEachไม่ใช่ อย่างไรก็ตามฉันไม่เข้าใจบรรทัดสุดท้ายของforEachวิธีการ " func.call(scope, this[i], i, this);" ด้วยซ้ำ ยกตัวอย่างเช่นไม่ได้ " this" และ " scope" หมายถึงวัตถุเดียวกันและไม่ได้เป็นthis[i]และiหมายถึงค่าปัจจุบันในวง? ฉันสังเกตเห็นในโพสต์อื่นมีคนพูดว่า "ใช้forEachเมื่อคุณต้องการทำบางสิ่งบนพื้นฐานของแต่ละองค์ประกอบของรายการคุณอาจจะเพิ่มสิ่งต่างๆลงในเพจเป็นต้นโดยพื้นฐานแล้วมันยอดเยี่ยมสำหรับเมื่อคุณต้องการ" ผลข้างเคียง " ฉันไม่รู้ความหมายของผลข้างเคียง Array.prototype.map = function(fnc) { var a = new Array(this.length); for (var i = 0; i < this.length; i++) { a[i] = fnc(this[i]); } return a; } Array.prototype.forEach = …

6
จะตรวจสอบได้อย่างไรว่าตัวแปรเป็นอาร์เรย์หรือไม่…หรือสิ่งที่คล้ายอาร์เรย์
ฉันต้องการใช้การforeachวนซ้ำกับตัวแปร แต่ตัวแปรนี้สามารถเป็นได้หลายประเภทNULLเช่น ดังนั้นก่อนที่จะforeachทดสอบ: if(is_array($var)){ foreach($var as ... แต่ฉันรู้ว่ามันสามารถเป็นคลาสที่ใช้Iteratorอินเทอร์เฟซได้ บางทีฉันอาจจะตาบอด แต่จะตรวจสอบได้อย่างไรว่าคลาสใช้อินเทอร์เฟซหรือไม่? มีบางอย่างเช่นis_aฟังก์ชันหรือinheritsตัวดำเนินการหรือไม่? ฉันพบว่าclass_implementsฉันสามารถใช้มันได้ แต่อาจมีบางอย่างที่ง่ายกว่านี้? ประการที่สองที่สำคัญกว่าคือฉันคิดว่าฟังก์ชันนี้มีอยู่จะเพียงพอที่จะตรวจสอบว่าตัวแปรis_arrayหรือ "ใช้Iteratorอินเทอร์เฟซ" หรือไม่หรือฉันควรทดสอบอะไรเพิ่มเติม
90 php  arrays  foreach 

4
เหตุใด List <T> .ForEach จึงอนุญาตให้แก้ไขรายการได้
ถ้าฉันใช้: var strings = new List&lt;string&gt; { "sample" }; foreach (string s in strings) { Console.WriteLine(s); strings.Add(s + "!"); } Addในforeachพ่น InvalidOperationException (เก็บได้รับการปรับเปลี่ยนการดำเนินการแจงนับไม่อาจดำเนินการ) ซึ่งผมคิดว่าตรรกะเนื่องจากเรามีการดึงพรมจากภายใต้เท้าของเรา อย่างไรก็ตามหากฉันใช้: var strings = new List&lt;string&gt; { "sample" }; strings.ForEach(s =&gt; { Console.WriteLine(s); strings.Add(s + "!"); }); มันยิงตัวเองที่เท้าทันทีโดยการวนซ้ำจนกว่ามันจะพ่น OutOfMemoryException นี้มาเป็นแปลกใจให้ฉันเป็นฉันคิดเสมอว่า List.ForEach เป็นอย่างใดอย่างหนึ่งเพียงเสื้อคลุมสำหรับหรือforeach ใครมีคำอธิบายเกี่ยวกับวิธีการและสาเหตุของพฤติกรรมนี้หรือไม่?for (Inpired byEach loop …
90 c#  list  foreach 

3
นี่เป็นข้อผิดพลาดที่ทราบของ C ++ 11 สำหรับลูปหรือไม่?
สมมติว่าเรามีโครงสร้างสำหรับการถือครอง 3 คู่พร้อมฟังก์ชันสมาชิกบางอย่าง: struct Vector { double x, y, z; // ... Vector &amp;negate() { x = -x; y = -y; z = -z; return *this; } Vector &amp;normalize() { double s = 1./sqrt(x*x+y*y+z*z); x *= s; y *= s; z *= s; return *this; } // ... }; นี่เป็นเพียงเล็กน้อยที่ออกแบบมาเพื่อความเรียบง่าย …

6
แบบอิงตามช่วงสำหรับการทำงานสำหรับอาร์เรย์ธรรมดาอย่างไร
ใน C ++ 11 คุณสามารถใช้การอ้างอิงตามช่วงforซึ่งทำหน้าที่เป็นforeachภาษาอื่น ๆ ใช้งานได้แม้กับอาร์เรย์ C ธรรมดา: int numbers[] = { 1, 2, 3, 4, 5 }; for (int&amp; n : numbers) { n *= 2; } จะรู้ได้อย่างไรว่าเมื่อไรควรหยุด? ใช้ได้เฉพาะกับอาร์เรย์แบบคงที่ที่ได้รับการประกาศในขอบเขตเดียวกันกับforใช้หรือไม่? คุณจะใช้สิ่งนี้forกับอาร์เรย์แบบไดนามิกอย่างไร
88 c++  arrays  foreach  c++11 

5
ฉันจะออกจาก foreach loop ใน C # ได้อย่างไร
foreach (var name in parent.names) { if name.lastname == null) { Violated = true; this.message = "lastname reqd"; } if (!Violated) { Violated = !(name.firstname == null) ? false : true; if (ruleViolated) this.message = "firstname reqd"; } } เมื่อใดก็ตามที่ละเมิดเป็นความจริงฉันต้องการออกจากforeachวงทันที ฉันต้องทำอย่างไร?
88 c#  foreach 

3
forEach เทียบกับ forEachOrder ใน Java 8 Stream
ฉันเข้าใจว่าวิธีการเหล่านี้ลำดับการดำเนินการแตกต่างกัน แต่ในการทดสอบทั้งหมดของฉันฉันไม่สามารถดำเนินการตามคำสั่งที่แตกต่างกันได้ ตัวอย่าง: System.out.println("forEach Demo"); Stream.of("AAA","BBB","CCC").forEach(s-&gt;System.out.println("Output:"+s)); System.out.println("forEachOrdered Demo"); Stream.of("AAA","BBB","CCC").forEachOrdered(s-&gt;System.out.println("Output:"+s)); เอาท์พุต: forEach Demo Output:AAA Output:BBB Output:CCC forEachOrdered Demo Output:AAA Output:BBB Output:CCC โปรดยกตัวอย่างเมื่อ 2 วิธีจะให้ผลลัพธ์ที่แตกต่างกัน

10
วิธีที่ชาญฉลาดในการลบรายการออกจากรายการ <T> ในขณะที่ระบุใน C #
ฉันมีกรณีคลาสสิกในการพยายามลบรายการออกจากคอลเลกชั่นในขณะที่ระบุเป็นวงรอบ: List&lt;int&gt; myIntCollection = new List&lt;int&gt;(); myIntCollection.Add(42); myIntCollection.Add(12); myIntCollection.Add(96); myIntCollection.Add(25); foreach (int i in myIntCollection) { if (i == 42) myIntCollection.Remove(96); // The error is here. if (i == 25) myIntCollection.Remove(42); // The error is here. } ในช่วงเริ่มต้นของการวนซ้ำหลังจากการเปลี่ยนแปลงเกิดขึ้นตัวInvalidOperationExceptionนับจะถูกส่งไปเนื่องจากตัวนับไม่ชอบเมื่อคอลเลกชันที่อยู่เบื้องหลังเปลี่ยน ฉันต้องการเปลี่ยนแปลงคอลเลคชันขณะทำซ้ำ มีหลายรูปแบบที่สามารถใช้เพื่อหลีกเลี่ยงปัญหานี้ได้ แต่ดูเหมือนจะไม่มีวิธีแก้ปัญหาที่ดี: อย่าลบภายในลูปนี้ แต่ให้เก็บ "ลบรายการ" แยกต่างหากที่คุณประมวลผลหลังจากลูปหลัก นี่เป็นวิธีแก้ปัญหาที่ดี แต่ในกรณีของฉันฉันต้องการให้ไอเท็มหายไปทันทีในฐานะ "รอ" จนกระทั่งหลังจากลูปหลักเพื่อลบไอเท็มจะเปลี่ยนโฟลว์ลอจิกของโค้ดของฉัน แทนที่จะลบรายการเพียงแค่ตั้งค่าสถานะบนรายการและทำเครื่องหมายว่าไม่ใช้งาน …
87 c#  list  foreach  enumeration 

7
foreach loops ทำงานอย่างไรใน C #? [ปิด]
ปิด . คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เน้นไปที่ปัญหาเดียวโดยแก้ไขโพสต์นี้เท่านั้น ปิดให้บริการใน7 เดือนที่ผ่านมา ปรับปรุงคำถามนี้ ประเภทของคลาสforeachใดบ้างที่สามารถใช้ลูปได้?
86 c#  foreach 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.