การประกาศแบบแยกโครงสร้าง
แยกข้อมูลลงในตัวแปร
การประกาศแบบแยกโครงสร้าง เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การประกาศ Data Class
- copy และ equals
- การประกาศแบบแยกโครงสร้าง
- Data Class ในคอลเลกชัน