ในคอตลิน "!!" เป็นตัวดำเนินการที่เรียกว่าตัวดำเนินการสองครั้ง โอเปอเรเตอร์นี้เรียกอีกอย่างว่า "ตัวดำเนินการยืนยันที่ไม่ใช่ค่าว่าง" โอเปอเรเตอร์นี้ใช้เพื่อแปลงค่าใดๆ ให้เป็นค่าประเภทที่ไม่ใช่ NULL และจะส่งข้อยกเว้นหากค่าที่สอดคล้องกันเป็น NULL ในตัวอย่างต่อไปนี้ เราจะมาดูวิธีการใช้ตัวดำเนินการ double-bang นี้
ตัวอย่างที่ 1
ในตัวอย่างนี้ เราจะพิจารณาตัวแปร "name" และในฐานะโปรแกรมเมอร์ เราต้องการส่งข้อยกเว้นพอยน์เตอร์ NULL ทุกครั้งที่มีค่า "name" เป็นโมฆะ ตอนนี้ รันโค้ดต่อไปนี้
fun main(args: Array<String>) { var name: String? name = null println(name) }
ผลลัพธ์
มันจะสร้างผลลัพธ์ต่อไปนี้ -
null
รหัสนี้ไม่ได้แก้ไขคำสั่งข้อกำหนดของเราจริงๆ เราต้องการส่งข้อยกเว้นตัวชี้ NULL เมื่อใดก็ตามที่มีค่า "name" เป็นโมฆะ มาแก้ไขตัวอย่างก่อนหน้านี้ของเราโดยใช้ตัวดำเนินการ double-bang (!!)
ตัวอย่างที่ 2
fun main(args: Array<String>) { var name: String? name = null // Nothing has been used to resolve overload ambiguity exception println(name!! is Nothing?) }
ผลลัพธ์
มันจะส่งข้อยกเว้น NULL Pointer Exception ที่รันไทม์ -
Exception in thread "main" java.lang.NullPointerException at MainKt.main(main.kt:6)