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

การกำหนด 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. การกำหนด Enum
  2. คุณสมบัติและเมธอดของ Enum
  3. Enum กับ when
  4. ค่าและลำดับของ Enum
← กลับไปที่ Kotlin Academy