แปลงสตรีม: map, where และ take
ปรับรูปแบบลำดับเหตุการณ์
แปลงสตรีม: map, where และ take เป็นบทเรียน Dart Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Dart Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Dart Academy มีบทเรียนทั้งหมด 4 บทเรียน
สตรีมปรับรูปแบบได้
เช่นเดียวกับรายการ สตรีมมีเมธอดที่มีประโยชน์สำหรับปรับรูปแบบเหตุการณ์ คุณสามารถ แปลงรูปแบบสตรีมให้เป็นสตรีมใหม่ได้โดยไม่แตะต้องแหล่งข้อมูลเดิม
map แปลงแต่ละเหตุการณ์
เมธอด map จะเรียกใช้ฟังก์ชันกับทุกเหตุการณ์แล้วส่งผลลัพธ์ออกมา ทำให้สตรีมค่าหนึ่งกลายเป็นสตรีมค่าที่ผ่านการแปลงแล้ว
final doubled = numbers.map((n) => n * 2);map คงจำนวนไว้
เมื่อใช้ map จำนวนเหตุการณ์จะยังเท่าเดิม โดยเปลี่ยนเฉพาะรูปแบบของค่าเท่านั้น อินพุตสามค่าจะให้เอาต์พุตสามค่าเสมอ ✨
Stream.fromIterable([1, 2, 3])
.map((n) => 'Item $n');where กรองเหตุการณ์
เมธอด where จะเก็บไว้เฉพาะเหตุการณ์ที่ผ่านการทดสอบ ส่วนใดก็ตามที่คืนค่า false จะถูกตัดออกจากสตรีมใหม่
final evens = numbers.where((n) => n.isEven);where อาจทำให้สตรีมสั้นลง
ต่างจาก map ตรงที่ where อาจส่งเหตุการณ์ออกมาน้อยกว่าจำนวนที่ได้รับ หากไม่มีเหตุการณ์ใดผ่านการทดสอบ สตรีมผลลัพธ์ก็จะยังว่างเปล่า
take จำกัดจำนวน
เมธอด take จะส่งเฉพาะเหตุการณ์ n รายการแรกออกมา แล้วหยุดรับฟัง เหมาะอย่างยิ่งเมื่อคุณต้องการเพียงไม่กี่ค่าจากสตรีมที่ยาวมาก 🎯
final firstThree = bigStream.take(3);take ยกเลิกก่อนกำหนด
หลังจากส่งเหตุการณ์ครบ n รายการแล้ว take จะยกเลิกการสมัครรับแหล่งข้อมูลโดยอัตโนมัติ จากนั้นสตรีมต้นฉบับจะหยุดผลิตข้อมูลให้คุณ
เชื่อมการแปลงเข้าด้วยกัน
เมธอดเหล่านี้คืนค่าสตรีมใหม่ คุณจึงสามารถ เชื่อมต่อ เมธอดเหล่านี้เข้าด้วยกันได้ อ่านห่วงโซ่จากซ้ายไปขวา: กรอง จากนั้นแปลง แล้วจึงจำกัดจำนวน
numbers
.where((n) => n.isEven)
.map((n) => n * 10)
.take(2);ประเมินเมื่อจำเป็น
การแปลงมีลักษณะ ประเมินเมื่อจำเป็น โดยจะไม่มีอะไรทำงานจนกว่าคุณจะเริ่มรับฟัง ห่วงโซ่จะประมวลผลเหตุการณ์ทีละรายการเมื่อเหตุการณ์มาถึงเท่านั้น
เครื่องมือเพิ่มเติม: takeWhile และ skip
นอกจากสามเมธอดหลักแล้ว takeWhile จะส่งเหตุการณ์ออกไปตราบใดที่การทดสอบยังผ่าน ส่วน skip จะข้ามเหตุการณ์ n รายการแรก รูปแบบการเชื่อมต่อเมธอดยังคงเหมือนเดิม
stream.skip(2).takeWhile((n) => n < 100);นำผลลัพธ์ไปใช้งาน
หลังจากแปลงแล้ว ให้อ่านสตรีมใหม่ด้วย await for หรือ listen ค่าที่ส่งออกมาแต่ละค่าจะผ่านห่วงโซ่ทั้งหมดของคุณมาเรียบร้อยแล้ว
await for (final v in transformed) {
print(v);
}ตรวจสอบความเข้าใจ
เมธอดใดสามารถลดจำนวนเหตุการณ์ได้
ทบทวน
คุณสามารถปรับรูปแบบสตรีมด้วย map เพื่อแปลงข้อมูล ใช้ where เพื่อกรอง และใช้ take เพื่อจำกัดจำนวน โดยเมธอดทั้งหมดเชื่อมต่อกันได้และจะประเมินเมื่อเริ่มรับฟังเท่านั้น 🎉
เรียนรู้ Dart ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 30
- บทเรียน
- 120
คำถามที่พบบ่อย
บทเรียน “แปลงสตรีม: map, where และ take” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “แปลงสตรีม: map, where และ take” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Dart Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Dart Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “แปลงสตรีม: map, where และ take”
ปรับรูปแบบลำดับเหตุการณ์ คุณปฏิบัติ Dart Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Dart Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Dart Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “แปลงสตรีม: map, where และ take” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Dart Academy นี้ได้ไหม
ได้ บทเรียน Dart Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- รับฟังด้วย await for
- สตรีมแบบเดี่ยวกับแบบกระจายเสียง
- แปลงสตรีม: map, where และ take
- สร้างสตรีมด้วย async*