คลาสภายในฟังก์ชัน
คลาสที่อยู่ในฟังก์ชัน
คลาสภายในฟังก์ชัน เป็นบทเรียน Kotlin Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Kotlin Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน
คลาสในฟังก์ชัน
Kotlin อนุญาตให้คุณประกาศ คลาสท้องถิ่น ภายในส่วนเนื้อหาของฟังก์ชัน คลาสนี้จะมองเห็นได้เฉพาะภายในฟังก์ชันนั้น
fun main() {
class Greeting(val text: String) {
fun show() = println(text)
}
Greeting("Hello local").show()
}จำกัดขอบเขตไว้ในฟังก์ชัน
คลาสท้องถิ่นไม่สามารถใช้งานนอกฟังก์ชันที่ประกาศคลาสนั้นได้ ทำให้ชนิดข้อมูลช่วยเหลือถูกจำกัดไว้อย่างชัดเจน
fun build(): String {
class Builder {
fun make() = "built"
}
return Builder().make()
}
fun main() {
println(build())
}การจับตัวแปรท้องถิ่น
เช่นเดียวกับคลอเชอร์ คลาสท้องถิ่นสามารถจับตัวแปรจากฟังก์ชันที่ครอบคลุมอยู่ได้
fun main() {
val prefix = ">> "
class Logger {
fun log(msg: String) = println(prefix + msg)
}
Logger().log("started")
}หลายอินสแตนซ์
คุณสามารถสร้างอินสแตนซ์ของคลาสท้องถิ่นได้มากเท่าที่ต้องการภายในฟังก์ชัน
fun main() {
class Point(val x: Int)
val a = Point(1)
val b = Point(2)
println(a.x + b.x)
}คลาสท้องถิ่นที่มีเมธอด
คลาสท้องถิ่นเป็นคลาสอย่างสมบูรณ์ ตัวสร้าง พร็อพเพอร์ตี และเมธอดล้วนใช้งานได้
fun main() {
class Account(var balance: Int) {
fun deposit(n: Int) { balance += n }
}
val acc = Account(100)
acc.deposit(50)
println(acc.balance)
}เหตุใดจึงใช้คลาสท้องถิ่น
ใช้คลาสท้องถิ่นเมื่อชนิดข้อมูลช่วยเหลือมีความหมายเฉพาะภายในฟังก์ชันเดียว เพื่อไม่ให้ไฟล์มีชนิดข้อมูลระดับบนสุดมากเกินไป
fun parseLine(line: String): Int {
class Token(val value: String)
val tokens = line.split(",").map { Token(it) }
return tokens.size
}
fun main() {
println(parseLine("a,b,c"))
}การจับสถานะที่เปลี่ยนแปลงได้
คลาสท้องถิ่นสามารถแก้ไขตัวแปรที่เปลี่ยนแปลงได้ซึ่งจับมาจากขอบเขตที่ครอบคลุมอยู่
fun main() {
var total = 0
class Adder {
fun add(n: Int) { total += n }
}
val a = Adder()
a.add(5)
a.add(7)
println(total)
}การใช้งานอินเทอร์เฟซภายในฟังก์ชัน
คลาสท้องถิ่นสามารถใช้งานอินเทอร์เฟซได้ ซึ่งมีประโยชน์เมื่อคุณต้องการการใช้งานที่มีชื่อและนำกลับมาใช้ซ้ำได้ภายในฟังก์ชันเดียว
interface Step { fun run(): String }
fun main() {
class First : Step {
override fun run() = "first"
}
println(First().run())
}คลาสท้องถิ่นเทียบกับออบเจ็กต์นิรนาม
เลือกใช้ คลาสท้องถิ่น เมื่อคุณต้องการชื่อ เช่น เพื่อสร้างหลายอินสแตนซ์หรืออ้างอิงชนิดข้อมูลนั้น เลือกใช้ ออบเจ็กต์นิรนาม สำหรับอินสแตนซ์เดียวที่ใช้งานแบบฝังในบรรทัด
fun main() {
class Repeater(val times: Int) {
fun run() = "x".repeat(times)
}
println(Repeater(3).run())
}การซ้อนภายในลูป
คุณสามารถประกาศคลาสท้องถิ่นภายในบล็อกอย่างลูปได้ด้วย โดยคลาสนั้นจะมีขอบเขตอยู่ภายในบล็อกดังกล่าว
fun main() {
for (i in 1..2) {
class Tag(val id: Int)
println(Tag(i).id)
}
}ตัวช่วยที่ใช้ได้จริง
คลาสท้องถิ่นเหมาะอย่างยิ่งสำหรับชนิดข้อมูลช่วยเหลือของโดเมนที่มีอายุสั้นและถูกใช้โดยฟังก์ชันเดียวเท่านั้น
fun report(values: List<Int>): String {
class Stats(val sum: Int, val max: Int)
val s = Stats(values.sum(), values.max())
return "sum=${s.sum} max=${s.max}"
}
fun main() {
println(report(listOf(3, 7, 2)))
}ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเกี่ยวกับคลาสท้องถิ่นของคุณ
สรุปทบทวน
คุณได้เรียนรู้เกี่ยวกับ คลาสท้องถิ่น:
- ประกาศภายในฟังก์ชันและมีขอบเขตอยู่ภายในฟังก์ชันนั้น
- สามารถจับและแก้ไขตัวแปรท้องถิ่นจากขอบเขตที่ครอบคลุมอยู่ได้
- เป็นคลาสอย่างสมบูรณ์ มีตัวสร้าง พร็อพเพอร์ตี เมธอด และอินเทอร์เฟซ
- ใช้คลาสท้องถิ่นเมื่อจำเป็นต้องมีชื่อ และใช้ออบเจ็กต์นิรนามสำหรับอินสแตนซ์เดียวที่ใช้งานแบบฝังในบรรทัด
fun main() {
val tag = "L"
class C { fun show() = tag }
println(C().show())
}เรียนรู้ Kotlin ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 51
- บทเรียน
- 203
คำถามที่พบบ่อย
บทเรียน “คลาสภายในฟังก์ชัน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “คลาสภายในฟังก์ชัน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Kotlin Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “คลาสภายในฟังก์ชัน”
คลาสที่อยู่ในฟังก์ชัน คุณปฏิบัติ Kotlin Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Kotlin Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Kotlin Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “คลาสภายในฟังก์ชัน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Kotlin Academy นี้ได้ไหม
ได้ บทเรียน Kotlin Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- คลาสซ้อนภายใน
- คลาสภายใน
- ออบเจ็กต์นิรนาม
- คลาสภายในฟังก์ชัน