Іноді я це бачу
List list = [];
Тоді list..add(color)
Яка різниця у використанні 1 крапки ( .) та 2 крапки ( ..)?
Іноді я це бачу
List list = [];
Тоді list..add(color)
Яка різниця у використанні 1 крапки ( .) та 2 крапки ( ..)?
Відповіді:
..відомий як каскадні позначення . Це дозволяє не повторювати одну і ту ж ціль, якщо ви хочете викликати кілька методів на одному об'єкті.
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);
Це каскадний оператор Dart
var l1 = new List<int>()..add(0)..addAll([1, 2, 3]);
призводить до l1того, що це список[0, 1, 2, 3]
var l1 = new List<int>().add(0).addAll([1, 2, 3]);
призводить до помилки, оскільки .add(0)повертаєтьсяvoid
..(у першому прикладі) посилається на new List(), тоді як .(у пізнішому) посилається на повернене значення попередньої частини виразу.
..було введено, щоб уникнути необхідності повертатися thisу всілякі методи, як, наприклад, add()мати можливість вільно використовувати API.
.. надає це з вікна для всіх класів.
newтепер необов’язково. ..посилається на список, повернутий new List<int>()і дозволяє викликати кілька методів по ньому, як add(0) addAll(...)без повторення, l1.і саме створеному екземпляру списку призначається l1, а не повернене значення останнього методу в ланцюжку ( addAll(...)). Чи відповідає це на ваше запитання?
new, що необов'язково починати з Dart 2.0, я просто заплутався newв наведеному вище контексті і дякую за ваше пояснення.
..add(6)схожий l1.add(6), .add(6)схожий l1.add(5).add(6). add(5)повертається , voidі ви не можете зателефонувати add()поvoid
Каскади (..) дозволяють зробити послідовність операцій над тим самим об’єктом. читати doc для детальної інформації
querySelector('#confirm') // Get an object.
..text = 'Confirm' // Use its members.
..classes.add('important')
..onClick.listen((e) => window.alert('Confirmed!'));
Попередній приклад еквівалентний:
var button = querySelector('#confirm');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));
..onClickне перекладається button.classes.onClick?
..Відомий як каскадний оператор у дартсі.
Це дозволяє використовувати більше ніж одну операцію підпорядкування:
Приклади:
banerad..load()..show().
List coursename;
coursename..add("java")..add("flutter" )..add("dart");
Ось ще один приклад
.. (in former example) refers to new List(), ви маєте на увазі, що ми знову створюємо нове,Listколи ми використовуємо,..на мій погляд, НІ. Я заплутався у вашомуnewслові, це дійсно НОВЕ або ви тут говорите проnewключове слово.