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

คุณสมบัติและเมธอดของ Enum

เพิ่มพฤติกรรม

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

ชนิดแจกแจงค่าสามารถเก็บข้อมูลได้

ค่าคงที่ของชนิดแจกแจงค่าสามารถมี พร็อพเพอร์ตี ได้ ให้ประกาศตัวสร้างในคลาสแจกแจงค่า แล้วส่งค่าเมื่อระบุค่าคงที่แต่ละค่า

enum class Coin(val cents: Int) {
    PENNY(1), NICKEL(5), DIME(10)
}

fun main() {
    println(Coin.DIME.cents)
}

พารามิเตอร์ของตัวสร้าง

ค่าที่อยู่ในวงเล็บหลังค่าคงที่แต่ละค่าคืออาร์กิวเมนต์ของตัวสร้างชนิดแจกแจงค่า ค่าเหล่านี้จะกลายเป็นพร็อพเพอร์ตีแบบอ่านอย่างเดียวของค่าคงที่นั้น

enum class Planet(val gravity: Double) {
    EARTH(9.8), MOON(1.6)
}

fun main() {
    println(Planet.MOON.gravity)
}

หลายพร็อพเพอร์ตี

ชนิดแจกแจงค่าสามารถประกาศพร็อพเพอร์ตีหลายรายการพร้อมกันได้

enum class Fruit(val color: String, val calories: Int) {
    APPLE("red", 95),
    BANANA("yellow", 105)
}

fun main() {
    val f = Fruit.BANANA
    println("${f.color} ${f.calories}")
}

การเพิ่มเมธอด

คุณสามารถประกาศฟังก์ชันทั่วไปในเนื้อหาของชนิดแจกแจงค่าได้ ค่าคงที่ทุกค่าจะใช้ฟังก์ชันเหล่านั้นร่วมกัน

enum class Temp(val celsius: Int) {
    COLD(5), WARM(25);

    fun toFahrenheit(): Int = celsius * 9 / 5 + 32
}

fun main() {
    println(Temp.WARM.toFahrenheit())
}

กฎของอัฒภาค

เมื่อชนิดแจกแจงค่ามีสมาชิกนอกเหนือจากค่าคงที่ เช่น เมธอดหรือพร็อพเพอร์ตี คุณต้องใส่ อัฒภาค หลังค่าคงที่สุดท้าย

enum class Op {
    ADD, SUB;

    fun describe() = "Operation: $name"
}

fun main() {
    println(Op.ADD.describe())
}

เมธอดนามธรรมแยกตามค่าคงที่

ชนิดแจกแจงค่าสามารถประกาศเมธอดนามธรรมที่ค่าคงที่แต่ละค่าจะเขียนทับได้ ทำให้ค่าคงที่แต่ละค่ามีพฤติกรรมเป็นของตนเอง

enum class Math {
    PLUS { override fun apply(a: Int, b: Int) = a + b },
    TIMES { override fun apply(a: Int, b: Int) = a * b };

    abstract fun apply(a: Int, b: Int): Int
}

fun main() {
    println(Math.TIMES.apply(3, 4))
}

พร็อพเพอร์ตีที่คำนวณค่า

ตัวอ่านค่าของพร็อพเพอร์ตีสามารถคำนวณค่าจากข้อมูลของค่าคงที่นั้นได้

enum class Account(val balance: Int) {
    SAVINGS(1000), CHECKING(50);

    val isRich: Boolean get() = balance > 500
}

fun main() {
    println(Account.SAVINGS.isRich)
}

การรวมข้อมูลกับพฤติกรรม

การมีทั้งพร็อพเพอร์ตีและเมธอดทำให้ชนิดแจกแจงค่าสามารถจำลองขอบเขตปิดที่มีรายละเอียดครบถ้วนได้

enum class Shape(val sides: Int) {
    TRIANGLE(3), SQUARE(4);

    fun describe() = "$name has $sides sides"
}

fun main() {
    println(Shape.SQUARE.describe())
}

การใช้พร็อพเพอร์ตีในตรรกะ

พร็อพเพอร์ตีของค่าคงที่มีประโยชน์ในการคำนวณและเงื่อนไขต่าง ๆ

enum class Tier(val discount: Int) {
    BRONZE(5), GOLD(20)
}

fun price(base: Int, tier: Tier) = base - base * tier.discount / 100

fun main() {
    println(price(100, Tier.GOLD))
}

ค่าเริ่มต้นของพร็อพเพอร์ตี

ตัวสร้างของชนิดแจกแจงค่ารองรับค่าเริ่มต้นของพารามิเตอร์เช่นเดียวกับตัวสร้างทั่วไป

enum class Role(val canEdit: Boolean = false) {
    VIEWER, EDITOR(true)
}

fun main() {
    println(Role.VIEWER.canEdit)
    println(Role.EDITOR.canEdit)
}

แบบจำลองฉบับสมบูรณ์

ในตัวอย่างนี้ ชนิดแจกแจงค่าจำลองสถานะ HTTP โดยมีทั้งข้อมูลและพฤติกรรม

enum class Http(val code: Int) {
    OK(200), NOT_FOUND(404);

    fun isError() = code >= 400
}

fun main() {
    println(Http.NOT_FOUND.isError())
}

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

ตรวจสอบความเข้าใจของคุณเกี่ยวกับพร็อพเพอร์ตีและเมธอดของชนิดแจกแจงค่า

สรุป

คุณได้เรียนรู้ว่าชนิดแจกแจงค่าสามารถมี พฤติกรรม ได้:

  • เพิ่มตัวสร้างเพื่อมอบพร็อพเพอร์ตีให้ค่าคงที่
  • ประกาศเมธอดที่ใช้ร่วมกัน โดยใส่อัฒภาคหลังค่าคงที่
  • เมธอดนามธรรมทำให้ค่าคงที่แต่ละค่ากำหนดพฤติกรรมของตนเองได้
  • พร็อพเพอร์ตีที่คำนวณค่าและพร็อพเพอร์ตีที่มีค่าเริ่มต้นทำงานได้ตามปกติ
enum class Coin(val cents: Int) {
    PENNY(1), DIME(10);
    fun double() = cents * 2
}

fun main() {
    println(Coin.DIME.double())
}

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

บทเรียน “คุณสมบัติและเมธอดของ Enum” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “คุณสมบัติและเมธอดของ Enum”

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

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

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

บทเรียน “คุณสมบัติและเมธอดของ Enum” ใช้เวลานานแค่ไหน

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

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

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

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

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