Kotlin Academy · บทเรียน

ช่วงของ Char และช่วงแบบกำหนดเอง

มากกว่าจำนวนเต็ม

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

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

นอกเหนือจากจำนวนเต็ม

ช่วงค่าไม่ได้มีไว้สำหรับ Int เท่านั้น Kotlin รองรับช่วงค่าของอักขระและชนิดอื่นที่เปรียบเทียบกันได้

บทเรียนนี้จะสำรวจช่วงค่าอักขระและวิธีที่ชนิดข้อมูลแบบกำหนดเองสามารถเข้าร่วมได้ด้วย rangeTo

ทบทวนช่วงค่าอักขระ

อักขระมีลำดับที่กำหนดไว้ ดังนั้น 'a'..'z' จึงเป็นช่วงค่าที่ถูกต้อง

คุณสามารถวนซ้ำ ตรวจสอบการเป็นสมาชิก และทำสิ่งอื่น ๆ ได้

fun main() {
    for (c in 'a'..'f') print(c)
    println()
    println('q' in 'a'..'z')
}

การตรวจสอบความถูกต้องของอักขระ

ช่วงค่าอักขระทำให้การตรวจสอบข้อมูลนำเข้าอ่านเข้าใจง่าย เช่น การตรวจสอบว่าเป็นตัวเลขหรือตัวอักษร

fun isDigit(c: Char): Boolean = c in '0'..'9'

fun main() {
    println(isDigit('7'))
    println(isDigit('x'))
}

การนับตัวอักษร

คุณสามารถสร้างชุดตัวอักษรอย่างรวดเร็วได้โดยวนซ้ำผ่านช่วงค่าอักขระและรวบรวมค่าต่าง ๆ

fun main() {
    val alphabet = ('a'..'z').toList()
    println(alphabet.size)
    println(alphabet.first())
    println(alphabet.last())
}

ช่วงค่าของจำนวนเต็มขนาดใหญ่

ช่วงค่าใช้กับ Long ได้เช่นกัน จึงเหมาะสำหรับช่วงตัวเลขขนาดใหญ่

ใช้ตัวดำเนินการแบบเดียวกัน

fun main() {
    val big = 1L..5L
    println(big.sum())
}

ช่วงค่าของชนิดที่เปรียบเทียบได้

ชนิด Comparable ใด ๆ ก็สามารถสร้างช่วงค่าด้วย .. ได้ แต่ช่วงค่าเหล่านี้รองรับเฉพาะการตรวจสอบการเป็นสมาชิก ไม่รองรับการวนซ้ำ

ตัวอย่างเช่น ช่วงค่าของ String จะตรวจสอบลำดับตามพจนานุกรม

fun main() {
    val range = "apple".."mango"
    println("cherry" in range)
    println("zebra" in range)
}

เหตุผลที่ช่วงค่าบางชนิดวนซ้ำไม่ได้

การวนซ้ำจำเป็นต้องมีขนาดก้าวที่กำหนดไว้ จำนวนเต็มและอักขระมีขนาดก้าวดังกล่าว (เพิ่มทีละ 1) แต่ข้อความและค่าทศนิยมไม่มีค่าถัดไปที่ชัดเจน

ดังนั้นช่วงค่าเหล่านั้นจึงรองรับ in แต่ไม่รองรับลูป for

fun main() {
    val r = 1.0..5.0
    println(2.5 in r)
    // for (x in r) // not allowed for Double
}

ชนิดข้อมูลแบบกำหนดเองกับ rangeTo

ตัวดำเนินการ .. จะเรียกฟังก์ชัน rangeTo หากคลาสของคุณใช้ Comparable คุณจะได้รับความสามารถในการตรวจสอบการเป็นสมาชิกของช่วงค่าโดยอัตโนมัติ

ในที่นี้คลาสเวอร์ชันอย่างง่ายจะเปรียบเทียบค่าตัวเลข

data class Ver(val n: Int) : Comparable<Ver> {
    override fun compareTo(other: Ver) = n - other.n
}

fun main() {
    val range = Ver(1)..Ver(5)
    println(Ver(3) in range)
    println(Ver(9) in range)
}

ตัวดำเนินการเบื้องหลัง

การเขียน a..b ให้ผลเหมือนกับการเรียก a.rangeTo(b)

รูปแบบตัวดำเนินการเป็นเพียงไวยากรณ์ที่อ่านสะดวกกว่าสำหรับฟังก์ชันเดียวกัน

fun main() {
    val r1 = 1..5
    val r2 = 1.rangeTo(5)
    println(r1.toList() == r2.toList())
}

การเลือกช่วงค่าที่เหมาะสม

คำแนะนำอย่างรวดเร็ว:

  • ตัวเลขและอักขระ → วนซ้ำและตรวจสอบการเป็นสมาชิก
  • ค่าทศนิยมและชนิดที่เปรียบเทียบได้แบบกำหนดเอง → ตรวจสอบการเป็นสมาชิกเท่านั้น
  • ต้องการกำหนดขนาดก้าวหรือไม่ ให้ใช้ลำดับการไล่ค่าของจำนวนเต็มหรืออักขระ
fun main() {
    println('m' in 'a'..'z')
    println(3.5 in 1.0..4.0)
    println(50 in 1..100)
}

สรุปรวม

ช่วงค่าสามารถใช้ได้กับชนิดข้อมูลหลายประเภท:

  • ช่วงค่าอักขระใช้วนซ้ำและตรวจสอบความถูกต้องได้
  • ช่วงค่า Long รองรับช่วงตัวเลขขนาดใหญ่
  • ชนิดที่เปรียบเทียบได้และชนิดข้อมูลแบบกำหนดเองรองรับการตรวจสอบการเป็นสมาชิก
  • .. เป็นรูปแบบย่อของ rangeTo
fun main() {
    val vowels = "aeiou"
    for (c in 'a'..'z') {
        if (c in vowels) print(c)
    }
    println()
}

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

ทดสอบความเข้าใจของคุณเกี่ยวกับช่วงค่าอักขระและช่วงค่าแบบกำหนดเอง

ทบทวน

คุณได้เรียนรู้เกี่ยวกับช่วงค่าอักขระและช่วงค่าแบบกำหนดเอง:

  • ช่วงค่าอักขระและ Long วนซ้ำได้เช่นเดียวกับ Int
  • ชนิดที่เปรียบเทียบได้รองรับการตรวจสอบการเป็นสมาชิกผ่าน ..
  • ชนิดข้อมูลที่มีค่าไม่ต่อเนื่องตรวจสอบด้วย in ได้ แต่ไม่สามารถวนลูปได้
  • .. เป็นรูปแบบย่อของ rangeTo

เท่านี้ก็จบหลักสูตรช่วงค่าและลำดับการไล่ค่า

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

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

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

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

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

บทเรียน “ช่วงของ Char และช่วงแบบกำหนดเอง” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ช่วงของ Char และช่วงแบบกำหนดเอง”

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

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

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

บทเรียน “ช่วงของ Char และช่วงแบบกำหนดเอง” ใช้เวลานานแค่ไหน

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

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

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

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

  1. ตัวดำเนินการช่วง
  2. step และ downTo
  3. ช่วงในลูป
  4. ช่วงของ Char และช่วงแบบกำหนดเอง
← กลับไปที่ Kotlin Academy