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 bthự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ả:
bcó thể là nullvà 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 != nilnắ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.

!!bvà không đơn giảnb? (Tôi không quen thuộc với kotlin, chỉ tò mò)