การเชื่อมต่อไปป์ไลน์และหลีกเลี่ยงลิสต์ชั่วคราวด้วย Sequence
สร้างไปป์ไลน์หลายขั้นตอนและใช้ Sequence เพื่อประเมินผลแบบขี้เกียจ
การเชื่อมต่อไปป์ไลน์และหลีกเลี่ยงลิสต์ชั่วคราวด้วย Sequence เป็นบทเรียน Kotlin Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Kotlin Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน
ปัญหา: รายการระหว่างทาง
การประเมินแบบทันทีเทียบกับแบบประเมินเมื่อจำเป็น
การแปลงเป็นลำดับ
val result = (1..1_000_000)
.asSequence()
.filter { it % 2 == 0 }
.map { it * it }
.take(5)
.toList()
println(result) // [4, 16, 36, 64, 100]ลำดับประเมินเมื่อจำเป็น: ยังไม่ทำงานจนกว่าจะถึงการดำเนินการปลายทาง
val seq = generateSequence(1) { it + 1 } // infinite!
.filter { it % 3 == 0 }
.map { it * it }
val first5 = seq.take(5).toList()
println(first5) // [9, 36, 81, 144, 225]generateSequence: ลำดับอนันต์
val fibonacci = generateSequence(Pair(0, 1)) { (a, b) -> Pair(b, a + b) }
.map { it.first }
val first10 = fibonacci.take(10).toList()
println(first10) // [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]ตัวสร้างลำดับ
val evens = sequence {
var n = 0
while (true) {
yield(n)
n += 2
}
}
println(evens.take(5).toList()) // [0, 2, 4, 6, 8]ควรใช้ลำดับเมื่อใด
เมื่อใดไม่ควรใช้ลำดับ
// Overkill for small list:
listOf(1, 2, 3).asSequence().map { it * 2 }.toList()
// Just use:
listOf(1, 2, 3).map { it * 2 }การดำเนินการปลายทางของลำดับ
val s = (1..100).asSequence().filter { it % 7 == 0 }
println(s.first()) // 7
println(s.count()) // 14
println(s.sum()) // 728การดำเนินการแบบมีสถานะเทียบกับไร้สถานะ
val s = (1..10).asSequence()
.filter { it > 3 } // stateless: lazy
.sorted() // stateful: must see all elements
.take(3).toList()
println(s) // [4, 5, 6]constrainOnce: ความปลอดภัยในการวนซ้ำครั้งเดียว
val seq = generateSequence(1) { if (it < 5) it + 1 else null }
.constrainOnce()
val first = seq.toList() // OK
// val second = seq.toList() // IllegalStateException!ตรวจสอบความเข้าใจอย่างรวดเร็ว
สรุปทบทวน
คำถามที่พบบ่อย
บทเรียน “การเชื่อมต่อไปป์ไลน์และหลีกเลี่ยงลิสต์ชั่วคราวด้วย Sequence” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การเชื่อมต่อไปป์ไลน์และหลีกเลี่ยงลิสต์ชั่วคราวด้วย Sequence” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Kotlin Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การเชื่อมต่อไปป์ไลน์และหลีกเลี่ยงลิสต์ชั่วคราวด้วย Sequence”
สร้างไปป์ไลน์หลายขั้นตอนและใช้ Sequence เพื่อประเมินผลแบบขี้เกียจ คุณปฏิบัติ Kotlin Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Kotlin Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Kotlin Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การเชื่อมต่อไปป์ไลน์และหลีกเลี่ยงลิสต์ชั่วคราวด้วย Sequence” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Kotlin Academy นี้ได้ไหม
ได้ บทเรียน Kotlin Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- map และ flatMap: แปลงสมาชิกทุกตัว
- filter, filterNot และ partition
- fold, reduce และ runningFold
- การเชื่อมต่อไปป์ไลน์และหลีกเลี่ยงลิสต์ชั่วคราวด้วย Sequence