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

การเรียกใช้อย่างปลอดภัยและ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. ชนิด Nullable และ Non-Null
  2. การเรียกใช้อย่างปลอดภัยและ Elvis
  3. ตัวดำเนินการ !!
  4. ชนิดข้อมูลจากแพลตฟอร์ม
← กลับไปที่ Kotlin Academy