Kotlin Academy · บทเรียน

forEach, repeat และ forEachIndexed

สำรวจตัวช่วยวนซ้ำรูปแบบฟังก์ชัน และเรียนรู้ว่าเมื่อใดเหมาะกว่าลูปแบบคลาสสิก

บทเรียน 3 จาก 413 ขั้นตอน

forEach, repeat และ forEachIndexed เป็นบทเรียน Kotlin Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Kotlin Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน

การวนซ้ำเชิงฟังก์ชัน

นอกเหนือจาก for แล้ว Kotlin ยังมีการวนซ้ำระดับสูง ได้แก่ forEach, forEachIndexed และ repeat ซึ่งช่วยให้ลูปขนาดเล็กสื่อความหมายได้ชัดเจนยิ่งขึ้น

พื้นฐานของ forEach

forEach รับแลมบ์ดาและทำงานกับสมาชิกทุกตัว โดยสมาชิกนั้นมีชื่อโดยนัยว่า it

fun main() {
    val items = listOf("a", "b", "c")
    items.forEach { println(it) }
}

forEach พร้อมพารามิเตอร์ที่ตั้งชื่อ

ตั้งชื่อพารามิเตอร์ของแลมบ์ดาให้สื่อความหมายมากขึ้นเมื่อ it อ่านแล้วไม่ชัดเจน

fun main() {
    val users = listOf("Alice", "Bob", "Charlie")
    users.forEach { name ->
        println("Hello, $name!")
    }
}

repeat สำหรับจำนวนรอบคงที่

repeat(n) ทำงานในบล็อกของมัน exactamente n ครั้ง แลมบ์ดาจะได้รับดัชนีของรอบ โดยเริ่มนับจาก 0

fun main() {
    repeat(5) {
        println("Iteration $it")
    }
}

repeat สำหรับผลข้างเคียง

ใช้ repeat กับการดำเนินการง่าย ๆ ที่ต้องทำ n ครั้ง เช่น พิมพ์ตัวคั่นหรือลองเรียกใช้ซ้ำ

fun main() {
    repeat(3) { println("-".repeat(20)) }
}

forEachIndexed

forEachIndexed ส่งทั้งดัชนีและสมาชิกให้กับแลมบ์ดา

fun main() {
    val words = listOf("Hello", "Kotlin", "World")
    words.forEachIndexed { index, word ->
        println("$index: $word")
    }
}

forEach เทียบกับ for

forEach เขียนได้กระชับ แต่ไม่รองรับ break และ continue หากต้องการออกจากลูปก่อน ให้ใช้ for แบบดั้งเดิม

fun main() {
    val nums = listOf(1, 2, 3, 4, 5)
    // forEach: runs to completion
    nums.forEach { print("$it ") }
    println()
    // for: can break
    for (n in nums) {
        if (n == 3) break
        print("$n ")
    }
    println()
}

การส่งค่ากลับจาก forEach

คุณสามารถจำลอง continue ใน forEach ด้วย return@forEach ที่มีป้ายกำกับ

fun main() {
    listOf(1, 2, 3, 4).forEach {
        if (it % 2 == 0) return@forEach // skip
        println("odd: $it")
    }
}

forEach ในแผนที่

forEach บนแผนที่จะเปิดเผยแต่ละ Map.Entry ในชื่อ it ให้แยกโครงสร้างเพื่อให้อ่านง่ายขึ้น

fun main() {
    val scores = mapOf("Alice" to 9, "Bob" to 7)
    scores.forEach { (name, score) ->
        println("$name -> $score")
    }
}

การเชื่อม repeat กับการเรียกใช้อื่น

repeat ส่งกลับค่า Unit ดังนั้นจึงไม่สามารถนำไปเชื่อมต่อแบบฟังก์ชันได้ ให้ใช้สำหรับผลข้างเคียงเท่านั้น

fun main() {
    var sum = 0
    repeat(10) { sum += it }
    println("Sum 0..9 = $sum") // 45
}

หมายเหตุด้านประสิทธิภาพ

สำหรับลูปที่ทำงานถี่กับคอลเลกชันขนาดใหญ่ for แบบธรรมดาจะเร็วกว่าเล็กน้อย เพราะไม่ต้องสร้างแลมบ์ดา แต่เพื่อความชัดเจน ควรเลือกใช้ forEach

fun main() {
    val n = 1_000_000
    var sum = 0L
    for (i in 1..n) sum += i
    println(sum)
}

ตรวจสอบความเข้าใจ

โครงสร้างใดส่งทั้งดัชนีและสมาชิกให้กับแลมบ์ดา

สรุปทบทวน

forEach: แลมบ์ดาสำหรับสมาชิกแต่ละตัว forEachIndexed: ดัชนีและสมาชิก repeat(n): ลูปที่ทำงาน n ครั้งตามจำนวนที่กำหนด ไม่มีรูปแบบใดรองรับ break แบบดั้งเดิม หากต้องการออกก่อน ให้ใช้ for

เริ่มต้นได้ฟรี

เรียนรู้ Kotlin ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
51
บทเรียน
203

คำถามที่พบบ่อย

บทเรียน “forEach, repeat และ forEachIndexed” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “forEach, repeat และ forEachIndexed” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Kotlin Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “forEach, repeat และ forEachIndexed”

สำรวจตัวช่วยวนซ้ำรูปแบบฟังก์ชัน และเรียนรู้ว่าเมื่อใดเหมาะกว่าลูปแบบคลาสสิก คุณปฏิบัติ Kotlin Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Kotlin Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Kotlin Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “forEach, repeat และ forEachIndexed” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Kotlin Academy นี้ได้ไหม

ได้ บทเรียน Kotlin Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. วนซ้ำด้วย for บนช่วงและคอลเลกชัน
  2. while และ do-while: ควรใช้แบบใด
  3. forEach, repeat และ forEachIndexed
  4. break, continue และการคืนค่าด้วยป้ายกำกับ
← กลับไปที่ Kotlin Academy