หากฉันมีค่าว่างBoolean b
ฉันสามารถทำการเปรียบเทียบต่อไปนี้ใน Java:
Boolean b = ...;
if (b != null && b) {
/* Do something */
} else {
/* Do something else */
}
ใน Kotlin ฉันสามารถบรรลุสิ่งเดียวกันได้โดยใช้ตัว!!
ดำเนินการ:
val b: Boolean? = ...
if (b != null && b!!) {
/* Do something */
} else {
/* Do something else */
}
อย่างไรก็ตามการใช้งานของฉัน!!
รู้สึกเป็นร่างเล็กน้อยสำหรับฉันหลีกเลี่ยงระบบความปลอดภัยว่าง
มีแนวทางที่หรูหรากว่านี้หรือไม่?
แก้ไขดูเหมือนว่าฉันจะซับซ้อนไปหน่อย สำหรับตัวแปรท้องถิ่นดังที่Bantharแสดงให้เห็นว่ามันใช้งานได้ อย่างไรก็ตามบูลีนของฉันb
เป็น "คุณสมบัติที่มีฟิลด์สำรอง" (ฉันยังไม่เร่งความเร็วเท่าไหร่) นี่คือผลลัพธ์:
b
อาจเป็นnull
และหนึ่งในคุณสมบัติของ Kotlin คือNull Safetyซึ่งทำให้เกิดข้อผิดพลาดในการรวบรวมเมื่อพยายามประเมินการอ้างอิงที่เป็นโมฆะ ดังนั้นการใช้ธรรมดาb
จะทำให้เกิดข้อผิดพลาดในการคอมไพล์ :)
b != nil
จับก่อนที่จะตรวจสอบด้านขวา?
val r = b?doSomething() ?: doSomethingElse()
จะใช้ได้นะ
!!b
และไม่เพียงb
? (ฉันไม่ค่อยคุ้นเคยกับ kotlin แค่อยากรู้อยากเห็น)