Tag: iterator
13 รายการ
Blog
Go bytes.FieldsSeq: อ่าน token ทีละชิ้นโดยไม่สร้าง slice ก้อนใหญ่
ใช้ bytes.FieldsSeq เดินข้อมูลไบต์แบบ lazy หยุดได้ทันทีเมื่อได้ field ครบ พร้อม Go test ตรวจ whitespace และ early stop
Rust Iterator::is_sorted_by_key: ตรวจลำดับโดยไม่สร้าง Vec สำรอง
ตรวจ stream ว่าเรียงตาม priority หรือไม่ด้วย is_sorted_by_key พร้อม Cargo test และข้อควรระวังเรื่อง key
Go strings.FieldsFuncSeq: แยก token แบบ iterator ไม่ต้องสร้าง slice ทั้งก้อน
ใช้ FieldsFuncSeq เดิน token ทีละค่า หยุดได้เร็ว และคัดลอกเฉพาะข้อมูลที่ต้องเก็บ พร้อม Go test
Go maps.Collect: สร้าง map จาก iterator คู่ key-value
ใช้ maps.Collect รับ iter.Seq2 เป็น map พร้อมทดสอบ duplicate key, empty input และแยก collection จาก validation
Go slices.AppendSeq: เติม iterator ลง slice โดยไม่ต้องเขียนลูปเอง
ใช้ slices.AppendSeq ต่อค่าจาก iter.Seq ลง slice ที่มีอยู่ พร้อมทดสอบ capacity, iterator แบบใช้ครั้งเดียว และ ownership ของข้อมูล
Zig splitBackwardsSequence: แยก path จากด้านท้ายโดยไม่ reverse ข้อมูล
ใช้ std.mem.splitBackwardsSequence ดึงชื่อไฟล์และโฟลเดอร์จากท้าย slice พร้อมรู้ empty field, delimiter หลายไบต์ และ lifetime
Go strings.SplitAfterSeq: แบ่งข้อความแบบ iterator โดยเก็บตัวคั่นไว้
ใช้ SplitAfterSeq อ่าน record ทีละส่วนโดยไม่สร้าง slice ทั้งก้อน พร้อมทดสอบ empty separator, single-use iterator และ ownership ของ substring
Rust Vec::extract_if: ดึงสมาชิกออกเฉพาะช่วงโดยยังเก็บลำดับที่เหลือ
ใช้ Vec::extract_if แยกสมาชิกที่ผ่านเงื่อนไขจาก range พร้อมเข้าใจ lazy iterator, early drop และต้นทุนการเลื่อนข้อมูล
Rust try_fold: สะสมค่าแล้วหยุดทันทีเมื่อเจอเงื่อนไขผิด
ใช้ Iterator::try_fold รวมข้อมูลพร้อมส่ง error ออกจากลูปเร็ว โดยไม่ต้องเขียน mutable accumulator เอง
Rust slice::chunk_by: แบ่งข้อมูลติดกันตามกติกาโดยไม่ copy
ใช้ chunk_by มอง slice เป็นช่วงต่อเนื่องตาม predicate พร้อมทดสอบ empty input, ศูนย์ และเส้นแบ่งกลุ่ม
Zig std.mem.window: ทำ Sliding Window โดยคืน Slice ไม่คัดลอกข้อมูล
ใช้ std.mem.window สร้าง moving window, chunk และ sampling พร้อมระวัง tail slice กับ size/advance ที่ห้ามเป็นศูนย์
Go slices.Chunk: แบ่ง batch โดยไม่เปิดช่องให้ append ทับข้อมูลข้างเคียง
ใช้ slices.Chunk เดินข้อมูลเป็น batch แบบ iterator พร้อมเข้าใจ clipped capacity และขอบเขตของ slice ที่แชร์ backing array
Rust map_while: แปลงข้อมูลจนเจอเส้นแบ่ง แล้วหยุดอย่างมีขอบเขต
ใช้ Iterator::map_while อ่าน prefix ที่แปลงได้ พร้อมอธิบายว่า item ที่ทำให้หยุดถูก consume และ iterator ไม่ fused