Nếu tôi có giá trị nullable Boolean b
, tôi có thể thực hiện phép so sánh sau trong Java:
Boolean b = ...;
if (b != null && b) {
/* Do something */
} else {
/* Do something else */
}
Trong Kotlin, tôi có thể đạt được điều tương tự bằng cách sử dụng !!
toán tử:
val b: Boolean? = ...
if (b != null && b!!) {
/* Do something */
} else {
/* Do something else */
}
Tuy nhiên, với tôi, việc sử dụng !!
cảm giác hơi sơ sài, phá vỡ hệ thống an toàn vô hiệu.
Có một cách tiếp cận thanh lịch hơn cho điều này?
Chỉnh sửa Có vẻ như tôi đã đơn giản hóa một chút. Đối với các biến cục bộ, như Banthar cho thấy, nó hoạt động. Tuy nhiên, Boolean của tôi b
thực sự là một "thuộc tính có trường hỗ trợ" (tôi thực sự chưa bắt kịp tốc độ mà điều này áp đặt). Đây là kết quả:
b
có thể là null
và một trong những tính năng của Kotlin là Null Safety , đưa ra lỗi biên dịch khi cố gắng đánh giá các tham chiếu có thể trống. Vì vậy, sử dụng đơn giản b
đưa ra một lỗi biên dịch :)
b != nil
nắm bắt được điều đó trước khi kiểm tra phía bên phải?
val r = b?doSomething() ?: doSomethingElse()
nên làm việc.
!!b
và không đơn giảnb
? (Tôi không quen thuộc với kotlin, chỉ tò mò)