0Pricing
Kotlin Academy · บทเรียน

การสร้างซีเควนซ์

จากคอลเลกชันและตัวสร้าง

การสร้างซีเควนซ์ เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เหตุใดจึงใช้ซีเควนซ์
  2. การสร้างซีเควนซ์
  3. การดำเนินการแบบขี้เกียจ
  4. ซีเควนซ์เทียบกับคอลเลกชัน
← กลับไปที่ Kotlin Academy