Dòng mã sau có hai dấu chấm hỏi:
final myStringList = prefs.getStringList('my_string_list_key') ?? [];
Nghĩa là gì?
Câu trả lời:
Các ??
phương tiện điều hành dấu hỏi kép "nếu null". Lấy ví dụ biểu thức sau.
String a = b ?? 'hello';
Điều này có nghĩa là a
bằng b
, nhưng nếu b
là null thì a
bằng'hello'
.
Một toán tử khác có liên quan là ??=
. Ví dụ:
b ??= 'hello';
Điều này có nghĩa là nếu b
là null thì đặt nó bằng hello
. Nếu không, đừng thay đổi nó.
Tài liệu tham khảo
Điều kiện
Các Dart 1.12 phát hành tin tức gọi chung sau khi các nhà khai thác vô-aware :
??
- toán tử if null??=
- nhiệm vụ không biếtx?.p
- quyền truy cập vô hiệux?.m()
- lệnh gọi phương thức nhận biết null?
đang được sử dụng bởi các nhà điều hành ternary: String a = b == true ? 'x' : 'y';
. Toán tử if-null hóa ra chỉ là một cách viết tắt cho phép kiểm tra null bậc ba như thế nào String a = a == null ? 'hello : a;
.
?
được sử dụng để điều hành ternary theo cùng một cách trong PHP, và có các phím tắt thích thay vì $a = $b === true ? $b : 'y'
bạn có thể gõ $a = $b === true ?: 'y'
hoặc thay thế $a = $b === true ? 'x' : $b
-$a = $b === true ?? 'x'