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

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

แยกข้อมูลลงในตัวแปร

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

การแยกข้อมูลจากวัตถุ

บางครั้งคุณต้องการดึงคุณสมบัติหลายรายการออกจากวัตถุพร้อมกัน

การประกาศแบบแยกส่วนของ Kotlin ช่วยให้คุณกำหนดตัวแปรหลายตัวจากวัตถุหนึ่งรายการได้ในบรรทัดเดียว

การแยกส่วนพื้นฐาน

ใส่ชื่อไว้ในวงเล็บทางด้านซ้ายของ = Kotlin จะกำหนดองค์ประกอบของวัตถุให้ชื่อต่าง ๆ ตามลำดับ

คลาสข้อมูลรองรับความสามารถนี้โดยอัตโนมัติ

data class User(val name: String, val age: Int)

fun main() {
    val user = User("Alice", 30)
    val (name, age) = user
    println(name)
    println(age)
}

วิธีการทำงาน

เบื้องหลัง การแยกโครงสร้างจะเรียกฟังก์ชันที่สร้างขึ้นอย่าง component1() component2() และอื่น ๆ

ตำแหน่งของตัวแปรแต่ละตัวจะตรงกับฟังก์ชันคอมโพเนนต์ที่สอดคล้องกัน

data class Point(val x: Int, val y: Int)

fun main() {
    val p = Point(3, 7)
    println(p.component1())
    println(p.component2())
}

ลำดับมีความสำคัญ

ตัวแปรจะจับคู่ตามตำแหน่ง ไม่ใช่ตามชื่อ

ตัวแปรตัวแรกจะได้รับพร็อพเพอร์ตีตัวแรกของคอนสตรักเตอร์เสมอ ไม่ว่าคุณจะตั้งชื่อตัวแปรนั้นว่าอะไรก็ตาม

data class Pair2(val first: Int, val second: Int)

fun main() {
    val (a, b) = Pair2(10, 20)
    println(a) // first property
    println(b) // second property
}

การข้ามคอมโพเนนต์

ใช้เครื่องหมายขีดล่าง _ เพื่อข้ามคอมโพเนนต์ที่คุณไม่ต้องการ

วิธีนี้ช่วยให้โค้ดสะอาดเมื่อมีเพียงบางค่าที่สำคัญ

data class User(val name: String, val age: Int, val city: String)

fun main() {
    val (name, _, city) = User("Mia", 28, "Paris")
    println(name)
    println(city)
}

การแยกโครงสร้างในลูป

การแยกโครงสร้างมีประโยชน์มากเมื่อวนซ้ำผ่านคอลเลกชันของออบเจ็กต์

คุณสามารถแยกค่าของแต่ละองค์ประกอบได้โดยตรงในส่วนหัวของ for

data class User(val name: String, val age: Int)

fun main() {
    val users = listOf(User("A", 20), User("B", 25))
    for ((name, age) in users) {
        println(name + " is " + age)
    }
}

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

แมปรองรับการแยกโครงสร้าง เพราะรายการของแมปมีคอมโพเนนต์คีย์และค่า

จึงทำให้การวนซ้ำผ่านแมปอ่านและทำความเข้าใจได้ง่ายมาก

fun main() {
    val scores = mapOf("Alice" to 90, "Bob" to 85)
    for ((name, score) in scores) {
        println(name + ": " + score)
    }
}

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

ฟังก์ชันสามารถคืนค่าคลาสข้อมูล แล้วผู้เรียกก็สามารถแยกโครงสร้างผลลัพธ์ได้

นี่เป็นทางเลือกที่สะอาดกว่าการใช้พารามิเตอร์ผลลัพธ์

data class MinMax(val min: Int, val max: Int)

fun minMax(nums: List<Int>): MinMax {
    return MinMax(nums.min(), nums.max())
}

fun main() {
    val (low, high) = minMax(listOf(3, 1, 8, 5))
    println(low)
    println(high)
}

การแยกโครงสร้างคู่และสามสมาชิก

ไลบรารีมาตรฐานรองรับการแยกโครงสร้างสำหรับ Pair และ Triple เช่นกัน

ทั้งสองแบบเหมาะสำหรับการจัดกลุ่มข้อมูลอย่างรวดเร็วโดยไม่ต้องกำหนดคลาส

fun main() {
    val pair = Pair("x", 1)
    val (label, value) = pair
    println(label)
    println(value)
}

การแยกโครงสร้างพารามิเตอร์ของแลมบ์ดา

คุณสามารถแยกโครงสร้างได้โดยตรงภายในรายการพารามิเตอร์ของแลมบ์ดา

วิธีนี้ใช้กันทั่วไปเมื่อแปลงรายการของแมปหรือคู่ข้อมูล

fun main() {
    val map = mapOf(1 to "one", 2 to "two")
    val text = map.map { (key, value) -> "" + key + "=" + value }
    println(text)
}

นำทุกอย่างมาประกอบกัน

การแยกโครงสร้างจะแยกออบเจ็กต์ออกเป็นตัวแปรต่าง ๆ:

  • ใช้วงเล็บทางด้านซ้ายของ =
  • คอมโพเนนต์จะจับคู่ตามตำแหน่ง
  • ใช้ _ เพื่อข้ามคอมโพเนนต์
  • ใช้ได้ในลูป แลมบ์ดา และการคืนค่า
data class Result(val ok: Boolean, val message: String)

fun main() {
    val (ok, message) = Result(true, "done")
    println(ok)
    println(message)
}

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

ทดสอบความเข้าใจของคุณเกี่ยวกับการประกาศแบบแยกโครงสร้าง

สรุปทบทวน

คุณได้เรียนรู้การประกาศแบบแยกโครงสร้าง:

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

ถัดไป คุณจะใช้คลาสข้อมูลภายในคอลเลกชัน เช่น เซตและแมป

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

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

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

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

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

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

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

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

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

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

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

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

  1. การประกาศ Data Class
  2. copy และ equals
  3. การประกาศแบบแยกโครงสร้าง
  4. Data Class ในคอลเลกชัน
← กลับไปที่ Kotlin Academy