เฮ้พวก!
ในสื่อนี้ ฉันจะบอกคุณเกี่ยวกับ Kotlin — Null Savety เป็นหนึ่งในตัวละครพิเศษของ Kotlin ดังนั้นเรามาดูกันดีกว่า!
Null Savety
ในฐานะโปรแกรมเมอร์ โดยเฉพาะผู้ที่ใช้ภาษาโปรแกรม Java บ่อยครั้ง คุณคงคุ้นเคยกับ “NullPointerException (NPE)” หรือสิ่งที่มักเรียกกันว่า “The Billion Dollar Mistake” เป็นอย่างดี NPE มักกำหนดให้เราต้องตรวจสอบอยู่เสมอว่าวัตถุนั้นมีศักยภาพเป็นโมฆะหรือไม่
ใน Kotlin เราไม่จำเป็นต้องทำข้อตกลงกับมัน ใช่แล้ว ✌️
Kotlin มีฟีเจอร์ Null Safety เป็นหนึ่งในข้อดีของมัน Kotlin จะวาง Null Exception ในการรวบรวมและจัดการ NPE ปกติทั้งหมดโดยอัตโนมัติ Kotlin ยังสามารถแยกแยะระหว่างอ็อบเจ็กต์ที่อาจเป็นโมฆะหรืออาจไม่เป็นโมฆะเมื่อสร้างอ็อบเจ็กต์ได้ ดังนั้นจึงมั่นใจได้ว่า Kotlin จะปลอดภัยจาก NPE
เฮ้! ลองดู :
var a: String = "medium" a = null // compilation error
ถ้าโค้ดแบบนั้นมันจะเกิดข้อผิดพลาด แต่ใน kotlin จะเป็นดังนี้:
var a: String? = "kotlin" a = null
ด้วยโค้ดแบบนั้น ตัวแปร a สามารถเติม null. ได้
กำลังตรวจสอบค่าว่าง
หากเราต้องการใช้บาง object เราต้องตรวจสอบว่า object นั้นเป็น null หรือไม่ และมีหลายวิธีในการตรวจสอบ nullable ใน Kotlin :
สภาพการใช้งาน
การใช้ Condition if/elseเป็นวิธีดั้งเดิมที่สุดในการตรวจสอบ null savety และเป็นวิธีที่บ่อยที่สุดด้วย
if (a != null && a.length > 0) { print("String of length ${a.length}") } else { print("Empty string") }
โทรอย่างปลอดภัย
การโทรอย่างปลอดภัยโดยใช้เครื่องหมาย '?' หากคอมไพเลอร์เป็นโมฆะจะไม่ทำอะไรเลย
a?.length
โอเปอเรเตอร์เอลวิส
Elvis Operator เป็นหนึ่งในสถานการณ์ทั่วไปที่สุดเมื่อเรามีประเภท nullable จะใช้ค่าเมื่อค่านั้นไม่ใช่ null
val home: String? if (user != null){ home = user.home } else{ home = "Default name" }
ในโค้ดด้านบน เราใช้เงื่อนไข if/else แต่เราสามารถทำให้มันง่ายขึ้นได้โดยใช้เครื่องหมาย '?'
val name: String = user.home ?: "default name"
ผู้ดำเนินการ
ไม่แนะนำวิธีนี้เนื่องจากจะบังคับให้วัตถุไม่เป็นค่าว่าง และจะส่งผลให้มี NPE หากค่าของวัตถุเป็นค่าว่าง มันใช้เครื่องหมายอัศเจรีย์สองตัว
val b = a!!.length
ตกลง! ตอนนี้ฉันจะพูดถึง Null Savety ใน Kotlin ฉันหวังว่าสื่อนี้จะมีประโยชน์สำหรับการใช้งาน และหากคุณมีเรื่องจะพูดคุยก็แสดงความคิดเห็นได้เลย
และอย่าลืมกดติดตามด้วยนะครับ XD
ขอให้มีความสุขในการเขียนโค้ด!