Đôi khi tôi thấy điều này
List list = [];
Sau đó list..add(color)
Có gì khác biệt khi sử dụng 1 chấm ( .
) và 2 chấm ( ..
)?
Đôi khi tôi thấy điều này
List list = [];
Sau đó list..add(color)
Có gì khác biệt khi sử dụng 1 chấm ( .
) và 2 chấm ( ..
)?
Câu trả lời:
..
được gọi là ký hiệu thác . Nó cho phép bạn không lặp lại cùng một mục tiêu nếu bạn muốn gọi một số phương thức trên cùng một đối tượng.
List list = [];
list.add(color1);
list.add(color2);
list.add(color3);
list.add(color4);
// with cascade
List list = [];
list
..add(color1)
..add(color2)
..add(color3)
..add(color4);
Đó là nhà điều hành thác của Dart
var l1 = new List<int>()..add(0)..addAll([1, 2, 3]);
kết quả l1
là một danh sách[0, 1, 2, 3]
var l1 = new List<int>().add(0).addAll([1, 2, 3]);
dẫn đến một lỗi, bởi vì .add(0)
trả vềvoid
..
(trong ví dụ trước) đề cập đến new List()
, trong khi .
(ở phần sau) đề cập đến giá trị trả về của phần trước của biểu thức.
..
đã được giới thiệu để tránh sự cần thiết phải quay lại this
trong tất cả các loại phương thức như add()
có thể sử dụng API một cách trôi chảy.
..
cung cấp điều này ra khỏi hộp cho tất cả các lớp.
new
bây giờ là tùy chọn. ..
đề cập đến danh sách được trả về bởi new List<int>()
và cho phép gọi nhiều phương thức trên đó add(0)
addAll(...)
mà không lặp lại l1.
và đó là thể hiện danh sách được tạo được gán cho l1
, không phải giá trị trả về của phương thức cuối cùng trong chuỗi ( addAll(...)
). Điều này có trả lời câu hỏi của bạn không?
new
là bắt đầu tùy chọn với Dart 2.0, tôi chỉ bối rối new
trong bối cảnh trên và cảm ơn lời giải thích của bạn.
..add(6)
là thích l1.add(6)
, .add(6)
là thích l1.add(5).add(6)
. add(5)
trở về void
và bạn không thể gọi add()
tiếpvoid
Cascades (..) cho phép bạn thực hiện một chuỗi các hoạt động trên cùng một đối tượng. đọc tài liệu để biết chi tiết
querySelector('#confirm') // Get an object.
..text = 'Confirm' // Use its members.
..classes.add('important')
..onClick.listen((e) => window.alert('Confirmed!'));
Ví dụ trước tương đương với:
var button = querySelector('#confirm');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));
..onClick
không dịch sang button.classes.onClick
?
..
Được gọi là toán tử xếp tầng trong phi tiêu.
Nó cho phép bạn sử dụng nhiều hơn một thao tác tiếp theo:
Ví dụ:
banerad..load()..show().
List coursename;
coursename..add("java")..add("flutter" )..add("dart");
Đây là một ví dụ khác
.. (in former example) refers to new List()
, bạn có nghĩa là chúng ta lại tạo ra một cái mớiList
khi chúng ta đang sử dụng..
theo ý kiến của tôi KHÔNG. Tôi đã nhầm lẫn bởi bạnnew
từ, là nó thực sự MỚI hoặc bạn đang nói vềnew
từ khóa ở đây.