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à abằng b, nhưng nếu blà null thì abằ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 blà 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'