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

ตัวดำเนินการ is และ as

ตรวจสอบและแปลงชนิดข้อมูล

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

การตรวจสอบและการแคสต์ชนิดข้อมูล

Kotlin มีโอเปอเรเตอร์สองรายการสำหรับทำงานกับชนิดข้อมูลขณะโปรแกรมทำงาน:

  • is ตรวจสอบว่าค่าเป็นชนิดข้อมูลหนึ่งหรือไม่
  • as แคสต์ค่าให้เป็นชนิดข้อมูลหนึ่ง

ทั้งสองรายการมีรูปแบบที่ปลอดภัย ซึ่งคุณจะได้เรียนรู้ในบทนี้

โอเปอเรเตอร์ is

is คืนค่าบูลีนเพื่อบอกว่าค่าตรงกับชนิดข้อมูลหรือไม่

นี่คือพื้นฐานของสมาร์ตแคสต์

fun main() {
    val x: Any = "hello"
    println(x is String)
    println(x is Int)
}

การตรวจสอบปฏิเสธด้วย !is

ใช้ !is เพื่อตรวจสอบว่าค่านั้นไม่ใช่ชนิดข้อมูลที่กำหนด

รูปแบบนี้อ่านได้เป็นธรรมชาติในส่วนคำสั่งตรวจสอบเงื่อนไข

fun main() {
    val x: Any = 42
    if (x !is String) {
        println("not a string")
    }
}

โอเปอเรเตอร์ as

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

ใช้เมื่อคอมไพเลอร์ไม่สามารถอนุมานชนิดข้อมูลได้เอง

fun main() {
    val x: Any = "hello"
    val s = x as String
    println(s.length)
}

เมื่อ as ล้มเหลว

หากค่าไม่ใช่ชนิดข้อมูลเป้าหมาย as จะโยน ClassCastException

นี่เป็นรูปแบบที่ไม่ปลอดภัย จึงควรใช้เมื่อมั่นใจเท่านั้น

fun main() {
    val x: Any = 42
    try {
        val s = x as String
        println(s)
    } catch (e: ClassCastException) {
        println("Cannot cast Int to String")
    }
}

การแคสต์แบบปลอดภัย as?

as? คือการแคสต์แบบปลอดภัย โดยจะคืนค่าที่แคสต์เป็นชนิดข้อมูลนั้น หรือคืนค่า null หากไม่สามารถแคสต์ได้

จะไม่มีการโยนข้อยกเว้น

fun main() {
    val x: Any = 42
    val s = x as? String
    println(s)
}

การแคสต์แบบปลอดภัยร่วมกับ Elvis

ใช้ as? คู่กับ Elvis เพื่อระบุค่าทดแทนเมื่อการแคสต์ล้มเหลว

นี่เป็นรูปแบบที่สะอาดและไม่ทำให้โปรแกรมหยุดทำงาน

fun main() {
    val x: Any = 42
    val s = (x as? String) ?: "default"
    println(s)
}

is เป็นตัวขับเคลื่อนสมาร์ตแคสต์

หลังตรวจสอบด้วย is โดยทั่วไปคุณไม่จำเป็นต้องใช้ as เลย เพราะสมาร์ตแคสต์จะเริ่มทำงาน

ใช้ as อย่างชัดแจ้งเฉพาะเมื่อไม่สามารถใช้สมาร์ตแคสต์ได้

fun main() {
    val x: Any = "smart"
    if (x is String) {
        println(x.uppercase()) // smart cast, no as needed
    }
}

การแคสต์ในคอลเลกชัน

การแคสต์แบบปลอดภัยมีประโยชน์เมื่อกรองคอลเลกชันที่มีชนิดข้อมูลผสมกัน

filterIsInstance ใช้ is อยู่ภายในเพื่อเก็บเฉพาะองค์ประกอบที่ตรงกัน

fun main() {
    val items: List<Any> = listOf(1, "two", 3, "four")
    val strings = items.filterIsInstance<String>()
    println(strings)
}

การเลือกโอเปอเรเตอร์ที่เหมาะสม

แนวทางง่าย ๆ:

  • ต้องการค่าบูลีนหรือไม่ ให้ใช้ is
  • มั่นใจในชนิดข้อมูลหรือไม่ ให้ใช้ as
  • ไม่แน่ใจหรือไม่ ให้ใช้ as? พร้อมค่าทดแทน
fun describe(x: Any): String {
    val text = x as? String ?: return "not text"
    return "text of length " + text.length
}

fun main() {
    println(describe("hello"))
    println(describe(99))
}

นำทุกอย่างมาประกอบกัน

โอเปอเรเตอร์ชนิดข้อมูลช่วยให้คุณควบคุมได้อย่างเต็มที่:

  • is / !is ใช้ตรวจสอบชนิดข้อมูล
  • as ใช้แคสต์ แต่อาจโยนข้อยกเว้น
  • as? แคสต์อย่างปลอดภัย และคืนค่า null เมื่อล้มเหลว
fun main() {
    val values: List<Any> = listOf(1, "hi", 2.5)
    for (v in values) {
        when {
            v is Int -> println("int " + v)
            v is String -> println("string " + v)
            else -> println("other")
        }
    }
}

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

ทดสอบความเข้าใจของคุณเกี่ยวกับ is และ as

สรุปทบทวน

คุณได้เรียนรู้โอเปอเรเตอร์ชนิดข้อมูล:

  • is และ !is ใช้ตรวจสอบชนิดข้อมูล
  • as ใช้แคสต์ที่อาจโยนข้อยกเว้น
  • as? ใช้แคสต์แบบปลอดภัยและคืนค่า null

ถัดไป คุณจะทำให้ when ครอบคลุมทุกกรณี

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

บทเรียน “ตัวดำเนินการ is และ as” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ตัวดำเนินการ is และ as”

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

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

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

บทเรียน “ตัวดำเนินการ is และ as” ใช้เวลานานแค่ไหน

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

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

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

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

  1. การใช้ when เป็นนิพจน์
  2. การแปลงชนิดข้อมูลอัจฉริยะ
  3. ตัวดำเนินการ is และ as
  4. when แบบครอบคลุมทุกกรณี
← กลับไปที่ Kotlin Academy