การเรียกใช้อย่างปลอดภัยและ Elvis
ตัวดำเนินการ ?. และ ?:
การเรียกใช้อย่างปลอดภัยและ Elvis เป็นบทเรียน Kotlin Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Kotlin Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน
การจัดการค่าที่อาจเป็นค่าว่างอย่างกระชับ
การเขียน if (x != null) ซ้ำทุกที่ทำให้โค้ดยืดยาว Kotlin จึงมีตัวดำเนินการแบบกระชับสองตัวสำหรับค่าที่อาจเป็นค่าว่าง:
- การเรียกแบบปลอดภัย
?. - ตัวดำเนินการ Elvis
?:
ตัวดำเนินการเรียกแบบปลอดภัย
การเรียกแบบปลอดภัย ?. จะเรียกใช้เมธอดหรืออ่านพร็อพเพอร์ตีต่อเมื่อค่านั้นไม่เป็นค่าว่างเท่านั้น มิฉะนั้น นิพจน์ทั้งหมดจะมีผลลัพธ์เป็น null
ไม่เกิดโปรแกรมล่ม และไม่ต้องตรวจสอบอย่างชัดเจน
fun main() {
val name: String? = "Kotlin"
println(name?.length)
}การเรียกแบบปลอดภัยเมื่อเป็นค่าว่าง
เมื่อค่าที่รับการเรียกเป็น null การเรียกแบบปลอดภัยจะหยุดการประเมินต่อและคืนค่า null แทนที่จะทำให้เกิดข้อผิดพลาด
นี่คือความแตกต่างสำคัญจากการเรียกด้วยจุดแบบปกติ
fun main() {
val name: String? = null
println(name?.length)
}การเชื่อมการเรียกแบบปลอดภัย
สามารถเชื่อมการเรียกแบบปลอดภัยต่อกันได้ หากส่วนใดส่วนหนึ่งของสายการเรียกเป็น null ผลลัพธ์ทั้งหมดจะกลายเป็น null
วิธีนี้ช่วยหลีกเลี่ยงการตรวจสอบค่าว่างที่ซ้อนกันหลายชั้น
fun main() {
val text: String? = "hello world"
val result = text?.uppercase()?.substring(0, 5)
println(result)
}ตัวดำเนินการ Elvis
ตัวดำเนินการ Elvis ?: จะจัดเตรียมค่าสำรองเมื่อด้านซ้ายเป็น null
ให้อ่านว่า ใช้ค่าด้านซ้าย มิฉะนั้นให้ใช้ค่าด้านขวา
fun main() {
val name: String? = null
val display = name ?: "Guest"
println(display)
}Elvis กับค่าจริง
หากด้านซ้ายไม่เป็นค่าว่าง ตัวดำเนินการ Elvis จะคืนค่าด้านซ้ายและไม่สนใจค่าสำรอง
ค่าสำรองจะถูกใช้เฉพาะเมื่อไม่มีค่าเท่านั้น
fun main() {
val name: String? = "Sam"
val display = name ?: "Guest"
println(display)
}การใช้การเรียกแบบปลอดภัยร่วมกับ Elvis
มักใช้ตัวดำเนินการเหล่านี้ร่วมกัน การเรียกแบบปลอดภัยอาจให้ผลลัพธ์เป็น null และ Elvis จะจัดเตรียมค่าเริ่มต้นให้
นี่เป็นรูปแบบการเขียน Kotlin ที่พบบ่อยที่สุดรูปแบบหนึ่ง
fun main() {
val name: String? = null
val length = name?.length ?: 0
println(length)
}Elvis สำหรับการออกก่อนกำหนด
ด้านขวาของ Elvis อาจเป็น return หรือ throw ได้ วิธีนี้เป็นวิธีที่ชัดเจนในการออกจากฟังก์ชันก่อนกำหนดเมื่อไม่มีค่า
หาก id เป็นค่าว่าง ฟังก์ชันจะคืนค่าทันที
fun process(id: String?) {
val safeId = id ?: return
println("Processing " + safeId)
}
fun main() {
process("A-100")
process(null)
println("done")
}การเรียกแบบปลอดภัยด้วย let
ใช้ ?. ร่วมกับ let เพื่อเรียกใช้บล็อกเฉพาะเมื่อค่าไม่เป็นค่าว่าง
ภายในบล็อก it จะอ้างอิงถึงค่าที่ไม่เป็นค่าว่าง
fun main() {
val name: String? = "Kotlin"
name?.let {
println("Length is " + it.length)
}
}การใช้ Elvis กำหนดตัวเลขเริ่มต้น
Elvis มีประโยชน์สำหรับแปลงตัวเลขที่อาจเป็นค่าว่างให้เป็นค่าเริ่มต้นที่ปลอดภัยก่อนการคำนวณ
ในที่นี้ จำนวนที่เป็นค่าว่างจะกลายเป็น 0 ทำให้การคำนวณทำงานได้เสมอ
fun main() {
val count: Int? = null
val total = (count ?: 0) + 5
println(total)
}สรุปภาพรวม
เมื่อนำมาใช้ร่วมกัน ตัวดำเนินการเหล่านี้จะแทนที่การตรวจสอบค่าว่างที่ยืดยาว:
?.จะเรียกใช้เฉพาะเมื่อค่าไม่เป็นค่าว่าง?:จะจัดเตรียมค่าสำรองเมื่อค่าเป็นค่าว่าง- การเชื่อมการเรียกและ
letช่วยทำให้ลำดับการทำงานที่ซับซ้อนกระชับขึ้น
fun main() {
val input: String? = null
val name = input?.trim()?.uppercase() ?: "UNKNOWN"
println(name)
}ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจของคุณเกี่ยวกับการเรียกแบบปลอดภัยและเอลวิส
ทบทวน
คุณได้เรียนรู้ตัวดำเนินการสำคัญสำหรับค่าที่เป็นค่าว่างได้สองแบบ:
- การเรียกแบบปลอดภัย
?.จะคืนค่าว่างแทนการทำงานล้มเหลว - เอลวิส
?:จะจัดเตรียมค่าสำรอง - ทั้งสองแบบทำงานร่วมกับ
letและการคืนค่าก่อนกำหนดได้อย่างราบรื่น
ถัดไป คุณจะได้รู้จักตัวดำเนินการ !! และเหตุผลที่ควรใช้อย่างระมัดระวัง
คำถามที่พบบ่อย
บทเรียน “การเรียกใช้อย่างปลอดภัยและ Elvis” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การเรียกใช้อย่างปลอดภัยและ Elvis” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Kotlin Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การเรียกใช้อย่างปลอดภัยและ Elvis”
ตัวดำเนินการ ?. และ ?: คุณปฏิบัติ Kotlin Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Kotlin Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Kotlin Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การเรียกใช้อย่างปลอดภัยและ Elvis” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Kotlin Academy นี้ได้ไหม
ได้ บทเรียน Kotlin Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ชนิด Nullable และ Non-Null
- การเรียกใช้อย่างปลอดภัยและ Elvis
- ตัวดำเนินการ !!
- ชนิดข้อมูลจากแพลตฟอร์ม