ตัวดำเนินการ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การใช้ when เป็นนิพจน์
- การแปลงชนิดข้อมูลอัจฉริยะ
- ตัวดำเนินการ is และ as
- when แบบครอบคลุมทุกกรณี