การกำหนด Enum
ชุดค่าคงที่ที่มีชื่อ
การกำหนด Enum เป็นบทเรียน Kotlin Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Kotlin Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน
ชนิดแจกแจงค่าคืออะไร
คลาสแจกแจงค่าใช้กำหนดชุดค่าคงที่ที่มีชื่อและตายตัว ใช้เมื่อค่าหนึ่งสามารถเป็นได้เพียงหนึ่งตัวเลือกจากกลุ่มตัวเลือกขนาดเล็กที่ทราบแน่ชัด
- ค่าคงที่แต่ละค่าคืออินสแตนซ์ของชนิดแจกแจงค่า
- คอมไพเลอร์รับรองว่าจะไม่มีค่าอื่นนอกเหนือจากนี้
enum class Direction {
NORTH, SOUTH, EAST, WEST
}
fun main() {
val d = Direction.NORTH
println(d)
}ทำไมไม่ใช้สตริงไปเลย
สตริงเปิดโอกาสให้พิมพ์ผิดและใช้ค่าที่ไม่ถูกต้องได้ แต่ชนิดแจกแจงค่าทำให้สถานะที่ไม่ถูกต้อง เป็นไปไม่ได้: คอมไพเลอร์จะปฏิเสธทุกค่าที่อยู่นอกชุดค่าที่ประกาศไว้
enum class Status { ACTIVE, INACTIVE }
fun main() {
val s: Status = Status.ACTIVE
println("Current: $s")
}การประกาศค่าคงที่
ระบุค่าคงที่ไว้ระหว่างวงเล็บปีกกา โดยคั่นด้วยจุลภาค ตามธรรมเนียมแล้วจะเขียนด้วยรูปแบบ UPPER_SNAKE_CASE
enum class Size {
SMALL, MEDIUM, LARGE, EXTRA_LARGE
}
fun main() {
println(Size.EXTRA_LARGE)
}ค่าคงที่แต่ละค่าคือออบเจ็กต์
ค่าคงที่ของชนิดแจกแจงค่าทุกค่าคืออินสแตนซ์เดี่ยวของชนิดแจกแจงค่านั้น คุณจะอ้างอิงค่าคงที่ผ่านชื่อชนิดแจกแจงค่าเสมอ เช่น Color.RED
enum class Color { RED, GREEN, BLUE }
fun main() {
val c = Color.GREEN
println(c == Color.GREEN)
}การเปรียบเทียบค่าของชนิดแจกแจงค่า
คุณสามารถเปรียบเทียบค่าคงที่ด้วย == เนื่องจากแต่ละค่าคืออินสแตนซ์เดี่ยว ความเท่ากันจึงตรงกับเอกลักษณ์ของการอ้างอิง
enum class Light { RED, YELLOW, GREEN }
fun main() {
val signal = Light.RED
if (signal == Light.RED) println("Stop")
}การอ่านพร็อพเพอร์ตี name
ค่าคงที่ทุกค่ามีพร็อพเพอร์ตี name ในตัว ซึ่งเก็บสตริงที่ตรงกับข้อความประกาศของค่านั้นทุกประการ
enum class Planet { MERCURY, VENUS, EARTH }
fun main() {
val p = Planet.EARTH
println(p.name)
}valueOf จากสตริง
ฟังก์ชัน valueOf() ที่สร้างขึ้นโดยอัตโนมัติจะแปลงสตริงที่ตรงกันให้เป็นค่าคงที่ของชนิดแจกแจงค่า หากสตริงไม่ตรงกัน จะเกิดข้อยกเว้น
enum class Day { MON, TUE, WED }
fun main() {
val d = Day.valueOf("TUE")
println(d)
}การใช้ชนิดแจกแจงค่าเป็นพารามิเตอร์
ชนิดแจกแจงค่าเหมาะสำหรับใช้เป็นพารามิเตอร์ของฟังก์ชัน เพราะผู้เรียกจะส่งได้เฉพาะค่าคงที่ที่ถูกต้องเท่านั้น
enum class Level { LOW, HIGH }
fun setVolume(level: Level) {
println("Volume set to $level")
}
fun main() {
setVolume(Level.HIGH)
}ชนิดแจกแจงค่าช่วยให้อ่านโค้ดได้ง่ายขึ้น
โค้ดที่เขียนว่า Direction.NORTH อธิบายเจตนาได้ในตัว เมื่อเทียบกับตัวเลขมหัศจรรย์อย่าง 0 หรือ 1 ความหมายจึงชัดเจนกว่า
enum class Gear { PARK, DRIVE, REVERSE }
fun main() {
val current = Gear.DRIVE
println("Gear is $current")
}ตัวอย่างที่สมจริง
การจำลองชุดดอกไพ่ขนาดเล็กเหมาะอย่างยิ่งกับชนิดแจกแจงค่า
enum class Suit { HEARTS, DIAMONDS, CLUBS, SPADES }
fun main() {
for (suit in Suit.values()) {
println(suit)
}
}ชนิดแจกแจงค่าที่มีค่าคงที่เดียว
การมีค่าคงที่เพียงค่ากเดียวก็ใช้ได้ มักใช้จำลองค่าที่รับประกันว่ามีเพียงหนึ่งค่า (ซิงเกิลตันแบบง่าย)
enum class AppMode { PRODUCTION }
fun main() {
println(AppMode.PRODUCTION)
}ตรวจสอบความเข้าใจ
ตรวจสอบความเข้าใจของคุณเกี่ยวกับการกำหนดชนิดแจกแจงค่า
สรุป
คุณได้เรียนรู้การ กำหนดชนิดแจกแจงค่า:
enum classใช้ประกาศชุดค่าคงที่ที่มีชื่อและตายตัว- ค่าคงที่แต่ละค่าคืออินสแตนซ์เดี่ยวที่เข้าถึงผ่านชื่อชนิดแจกแจงค่า
nameและvalueOf()เชื่อมโยงระหว่างค่าคงที่กับสตริง- ชนิดแจกแจงค่าป้องกันค่าที่ไม่ถูกต้องตั้งแต่เวลาคอมไพล์
enum class Direction { NORTH, SOUTH, EAST, WEST }
fun main() {
println(Direction.valueOf("EAST").name)
}คำถามที่พบบ่อย
บทเรียน “การกำหนด Enum” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การกำหนด Enum” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Kotlin Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การกำหนด Enum”
ชุดค่าคงที่ที่มีชื่อ คุณปฏิบัติ Kotlin Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Kotlin Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Kotlin Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การกำหนด Enum” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Kotlin Academy นี้ได้ไหม
ได้ บทเรียน Kotlin Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ