As vezes eu vejo isso
List list = [];
Então list..add(color)
Qual é a diferença no uso de 1 ponto ( .
) e 2 pontos ( ..
)?
As vezes eu vejo isso
List list = [];
Então list..add(color)
Qual é a diferença no uso de 1 ponto ( .
) e 2 pontos ( ..
)?
Respostas:
..
é conhecido como notação em cascata . Ele permite que você não repita o mesmo destino se desejar chamar vários métodos no mesmo objeto.
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);
É o operador em cascata da Dart
var l1 = new List<int>()..add(0)..addAll([1, 2, 3]);
resulta em l1
ser uma lista[0, 1, 2, 3]
var l1 = new List<int>().add(0).addAll([1, 2, 3]);
resulta em um erro, porque .add(0)
retornavoid
..
(no exemplo anterior) refere-se a new List()
, enquanto .
(no posterior) refere-se ao valor de retorno da parte anterior da expressão.
..
foi introduzido para evitar a necessidade de retornar this
em todos os tipos de métodos, como add()
poder usar uma API de maneira fluente.
..
fornece isso imediatamente para todas as classes.
new
agora é opcional. ..
refere-se à lista retornada por new List<int>()
e permite chamar vários métodos nela, add(0)
addAll(...)
sem repetir, l1.
e é a instância da lista criada à qual é atribuída l1
, e não o valor de retorno do último método na cadeia ( addAll(...)
). Isso responde sua pergunta?
new
é opcional a partir do Dart 2.0, fiquei confuso com o new
contexto acima e obrigado pela sua explicação.
..add(6)
é como l1.add(6)
, .add(6)
é como l1.add(5).add(6)
. add(5)
retornos void
e você não pode chamar add()
onvoid
Cascatas (..) permitem fazer uma sequência de operações no mesmo objeto. leia o documento para obter detalhes
querySelector('#confirm') // Get an object.
..text = 'Confirm' // Use its members.
..classes.add('important')
..onClick.listen((e) => window.alert('Confirmed!'));
O exemplo anterior é equivalente a:
var button = querySelector('#confirm');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));
..onClick
que não se traduz em button.classes.onClick
?
..
É conhecido como o operador em cascata no dardo.
Ele permite que você use mais de uma operação subsequente:
Exemplos:
banerad..load()..show().
List coursename;
coursename..add("java")..add("flutter" )..add("dart");
Aqui está outro exemplo
.. (in former example) refers to new List()
, você quer dizer que estamos novamente criando um novoList
quando estamos usando..
na minha opinião NÃO. Fiquei confuso com a suanew
palavra, é realmente NOVO ou você está falando sobrenew
palavras-chave aqui.