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

การประกาศแบบแยกโครงสร้างด้วย componentN

แยกโครงสร้างอินสแตนซ์ของ data class เป็นตัวแปรด้วยฟังก์ชัน component

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

พื้นฐานการแยกโครงสร้าง

การประกาศแบบแยกโครงสร้าง แยกออบเจ็กต์ออกเป็นตัวแปรหลายตัวในขั้นตอนเดียว โดยใช้ฟังก์ชันตัวดำเนินการ componentN()

การแยกโครงสร้างคลาสข้อมูล

คลาสข้อมูลจะสร้าง component1, component2 และอื่น ๆ โดยอัตโนมัติ คุณจึงเขียน val (a, b) = obj ได้

data class Point(val x: Int, val y: Int)
fun main() {
    val p = Point(3, 5)
    val (x, y) = p
    println("x=$x, y=$y")
}

การแยกโครงสร้าง Pair

ชนิดมาตรฐาน Pair และ Triple รองรับการแยกโครงสร้างได้ทันที

fun main() {
    val pair = "Ada" to 35
    val (name, age) = pair
    println("$name is $age")
}

การแยกโครงสร้าง Triple

Triple เก็บค่าสามค่า จึงสามารถแยกออกเป็นตัวแปรสามตัวได้

fun main() {
    val rgb = Triple(255, 128, 0)
    val (r, g, b) = rgb
    println("R=$r G=$g B=$b")
}

การแยกโครงสร้างในการวนซ้ำแมป

รายการในแมปมี component1 ซึ่งเป็นคีย์ และ component2 ซึ่งเป็นค่า ให้แยกโครงสร้างในส่วนหัวของลูป for

fun main() {
    val ages = mapOf("Alice" to 30, "Bob" to 25)
    for ((name, age) in ages) {
        println("$name -> $age")
    }
}

การแยกโครงสร้างในแลมบ์ดา

แลมบ์ดาที่รับคู่ค่าสามารถแยกโครงสร้างพารามิเตอร์ได้โดยตรง

fun main() {
    val pairs = listOf("a" to 1, "b" to 2, "c" to 3)
    pairs.forEach { (letter, num) -> println("$letter=$num") }
}

การละเว้นค่าด้วย _

ใช้ขีดล่าง _ เพื่อข้ามค่าที่ไม่ต้องการ

data class User(val name: String, val email: String, val age: Int)
fun main() {
    val u = User("Ada", "ada@example.com", 35)
    val (name, _, age) = u
    println("$name ($age)")
}

การคืนค่าหลายค่า

ฟังก์ชันสามารถคืนค่าเป็น Pair หรือคลาสข้อมูลที่กำหนดเองได้ และผู้เรียกจะแยกโครงสร้างค่าเหล่านั้น

data class Result(val sum: Int, val product: Int)
fun computeBoth(a: Int, b: Int) = Result(a + b, a * b)
fun main() {
    val (s, p) = computeBoth(4, 5)
    println("sum=$s product=$p")
}

componentN แบบกำหนดเอง

คลาสใด ๆ ก็รองรับการแยกโครงสร้างได้โดยประกาศ operator fun componentN()

class RGB(val r: Int, val g: Int, val b: Int) {
    operator fun component1() = r
    operator fun component2() = g
    operator fun component3() = b
}
fun main() {
    val (red, green, blue) = RGB(255, 100, 0)
    println("$red $green $blue")
}

การแยกโครงสร้างด้วย withIndex()

จับคู่ดัชนีกับค่าเมื่อวนซ้ำด้วย withIndex()

fun main() {
    val fruits = listOf("apple", "banana", "cherry")
    for ((idx, fruit) in fruits.withIndex()) {
        println("$idx: $fruit")
    }
}

ข้อจำกัด: อิงตามตำแหน่ง

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

data class Point(val x: Int, val y: Int)
fun main() {
    val p = Point(10, 20)
    val (a, b) = p // a=x, b=y
    // Add a property in the middle and old destructuring shifts!
    println("$a $b")
}

ตรวจสอบอย่างรวดเร็ว

ฟังก์ชันตัวดำเนินการใดทำให้สามารถแยกโครงสร้างพร็อพเพอร์ตีลำดับที่ i ได้

สรุปทบทวน

การแยกโครงสร้างใช้ฟังก์ชันตัวดำเนินการ componentN() คลาสข้อมูล Pair, Triple และรายการในแมปรองรับการทำงานนี้ได้ทันที ใช้ _ เพื่อข้ามค่า และโปรดจำไว้ว่าการแยกโครงสร้างอิงตามตำแหน่ง ไม่ใช่ตามชื่อ

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

บทเรียน “การประกาศแบบแยกโครงสร้างด้วย componentN” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “การประกาศแบบแยกโครงสร้างด้วย componentN”

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

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

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

บทเรียน “การประกาศแบบแยกโครงสร้างด้วย componentN” ใช้เวลานานแค่ไหน

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

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

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

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

  1. พื้นฐาน Data Class: เมธอดที่สร้างอัตโนมัติ
  2. การคัดลอกด้วย copy() และการเขียนทับบางส่วน
  3. การประกาศแบบแยกโครงสร้างด้วย componentN
  4. Data Class ในคอลเลกชันและในฐานะคีย์ของ Map
← กลับไปที่ Kotlin Academy