การสร้างซีเควนซ์
จากคอลเลกชันและตัวสร้าง
การสร้างซีเควนซ์ เป็นบทเรียน Kotlin Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Kotlin Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน
การสร้างลำดับ
มีหลายวิธีในการสร้าง Sequence ได้แก่ สร้างจากคอลเลกชันที่มีอยู่ สร้างจากองค์ประกอบ สร้างด้วยฟังก์ชันสร้างค่า หรือสร้างด้วยตัวสร้าง บทเรียนนี้จะครอบคลุมทุกวิธี
จากคอลเลกชันด้วย asSequence
วิธีที่ใช้บ่อยที่สุดคือเรียก asSequence() บนคอลเลกชันที่มีอยู่ เพื่อประมวลผลแบบประเมินผลเมื่อจำเป็น
fun main() {
val seq = listOf(1, 2, 3, 4).asSequence()
val result = seq.map { it * 2 }.toList()
println(result)
}จากองค์ประกอบด้วย sequenceOf
sequenceOf สร้างลำดับโดยตรงจากชุดค่าที่กำหนดไว้ตายตัว
fun main() {
val seq = sequenceOf("a", "b", "c")
seq.forEach { println(it) }
}ลำดับไม่สิ้นสุดด้วย generateSequence
generateSequence สร้างลำดับที่อาจไม่สิ้นสุดจากค่าเริ่มต้นและฟังก์ชันที่คำนวณองค์ประกอบถัดไป ใช้คู่กับ take เพื่อจำกัดจำนวนองค์ประกอบ
fun main() {
val powers = generateSequence(1) { it * 2 }
val first5 = powers.take(5).toList()
println(first5)
}การหยุด generateSequence
หากฟังก์ชันสำหรับสร้างองค์ประกอบถัดไปส่งคืนค่า null ลำดับจะสิ้นสุดลง วิธีนี้ช่วยให้คุณสร้างค่าไปจนกว่าจะตรงตามเงื่อนไข
fun main() {
val countdown = generateSequence(5) { if (it > 1) it - 1 else null }
println(countdown.toList())
}generateSequence โดยไม่มีค่าเริ่มต้น
คุณสามารถส่งแลมบ์ดาสร้างค่าเพียงตัวเดียว ซึ่งส่งคืนค่าถัดไปหรือค่า null ได้ วิธีนี้เหมาะสำหรับการอ่านกระแสข้อมูลขาเข้าแบบประเมินผลเมื่อจำเป็น
fun main() {
var n = 0
val seq = generateSequence { if (n < 3) n++ else null }
println(seq.toList())
}ตัวสร้างลำดับ
ตัวสร้าง sequence { } ช่วยให้คุณสร้างองค์ประกอบแบบลำดับคำสั่งโดยใช้ yield (หนึ่งค่า) และ yieldAll (หลายค่า)
fun main() {
val seq = sequence {
yield(1)
yield(2)
yieldAll(listOf(3, 4))
}
println(seq.toList())
}การสร้างค่าด้วย Yield แบบประเมินผลเมื่อจำเป็น
ตัวสร้างก็ประเมินผลเมื่อจำเป็นเช่นกัน โค้ดระหว่าง yield แต่ละครั้งจะทำงานต่อเมื่อมีการดึงองค์ประกอบเท่านั้น เมื่อใช้ร่วมกับ take คุณจึงสามารถอธิบายตัวสร้างที่ไม่สิ้นสุดได้อย่างปลอดภัย
fun main() {
val naturals = sequence {
var i = 1
while (true) {
yield(i)
i++
}
}
println(naturals.take(4).toList())
}ฟีโบนัชชีด้วย generateSequence
ตัวอย่างคลาสสิกคือการสร้างตัวเลขฟีโบนัชชีแบบประเมินผลเมื่อจำเป็น โดยใช้คู่เป็นสถานะ
fun main() {
val fib = generateSequence(Pair(0, 1)) { Pair(it.second, it.first + it.second) }
.map { it.first }
println(fib.take(8).toList())
}การแปลงกลับเป็นคอลเลกชัน
ลำดับจะกลายเป็นคอลเลกชันที่สร้างขึ้นจริงก็ต่อเมื่อคุณเรียกใช้การดำเนินการปลายทาง เช่น toList(), toSet() หรือ toMutableList()
fun main() {
val set = sequenceOf(1, 2, 2, 3).toSet()
println(set)
}การเลือกวิธีสร้าง
ใช้ asSequence() กับข้อมูลที่มีอยู่ ใช้ sequenceOf กับค่าที่กำหนดไว้ตายตัว ใช้ generateSequence กับชุดค่าที่คำนวณขึ้น และใช้ตัวสร้าง sequence { } เมื่อต้องการสร้างค่าแบบลำดับคำสั่งที่กำหนดเอง
ตรวจสอบความเข้าใจ
generateSequence รู้ได้อย่างไรว่าเมื่อใดควรหยุด
สรุปทบทวน
คุณสามารถสร้างลำดับด้วย asSequence(), sequenceOf, generateSequence (ค่าเริ่มต้นและค่าถัดไป โดยสิ้นสุดเมื่อได้ค่า null) และตัวสร้าง sequence { } ที่ใช้ yield/yieldAll ต่อไปคุณจะได้เห็นว่าการดำเนินการแบบประเมินผลเมื่อจำเป็นช่วยหลีกเลี่ยงรายการระหว่างกลางได้อย่างไร
คำถามที่พบบ่อย
บทเรียน “การสร้างซีเควนซ์” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การสร้างซีเควนซ์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Kotlin Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การสร้างซีเควนซ์”
จากคอลเลกชันและตัวสร้าง คุณปฏิบัติ Kotlin Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Kotlin Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Kotlin Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การสร้างซีเควนซ์” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Kotlin Academy นี้ได้ไหม
ได้ บทเรียน Kotlin Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ