Hoje vou apresentar o operador Spred da linguagem Dart. |
|
DART(tradução: dardo, pequeno míssel) é a linguagem da Google usada pelo Flutter.
O Flutter é um SDK de aplicativo móvel do Google que ajuda a criar aplicativos móveis modernos para iOS e Android usando uma única (quase) base de código.
Se você não conhece o Flutter veja o meu artigo : Flutter - Primeiros contatos e impressões
O objetivo dos artigos sobre o DART é abordar recursos específicos da linguagem que são uma característica do DART de forma a ajudar programadores C# a entender esses recursos.
Você pode testar os códigos usados neste artigo no DartPad: https://dartpad.dev/
Apresentando o operador Spread
O operador Spread é representado por 3 pontos ( . . . ) e pode ser usado para estender os elementos de uma coleção e também para concatenar coleções.
Vejamos o seu uso com a coleção List:
void main() {
List<int> lista1 = [1, 2, 3];
List<int> lista2 = [...lista1 ];
List<int> lista3 = [0,...lista2];
print("lista2 = " + lista2.toString());
print("lista3 = " + lista3.toString());
} |
lista2 = [1, 2,
3]
lista3 = [0, 1, 2, 3] |
Podemos verificar se a lista da direita possui um valor null usando o operador null-aware spread (...?):
void main() {
List<int> lista1 = [4, 5, 6];
List<int> lista2 = [1, 2, 3, ...lista1 ];
List<int> lista3 = [...?lista2];
print("lista2 = " + lista2.toString());
print("lista3 = " + lista3.toString());
} |
lista2 = [1, 2,
3, 4, 5, 6]
lista3 = [1, 2, 3, 4, 5, 6] |
Podemos usar o operador spread para combinar duas listas :
void main() {
List<int> lista1 = [1, 2, 3];
List<int> lista2 = [4, 5, 6, 7];
List<int> resultado = [...lista1, ...lista2];
print(resultado);
}
|
[1, 2, 3, 4, 5, 6, 7] |
Podemos também realizar concatenações aninhadas usando o operador spread:
void main() {
List<int> lista1 = [1, 2, 3];
List<int> lista2 = [4, 5 ];
List<int> resultado = [...[0, ...lista1, ...lista2], 6];
print("resultado = " + resultado.toString());
}
|
resultado = [0, 1, 2, 3, 4, 5, 6] |
Podemos ainda usar uma condição if para determinar se a lista poderá ser concatenada ou não:
void main() { List<int> lista1 = [1, 2, 3]; List<int> lista2 = [4, 5, 6]; bool condicao = false; List<int> resultado1 = [...lista1, if (condicao) ...lista2]; List<int> resultado2 = [...lista1, if (!condicao) ...lista2]; print(resultado1); print(resultado2); } |
[1, 2, 3]
[1, 2, 3, 4, 5, 6] |
O operador spread também pode ser usado com a classe Set<E>.
Nota: A classe Set<E> representa uma coleção de objetos na qual cada objeto pode ocorrer somente uma vez.
void main() {
Set<int> s1 = {1, 2, 3};
Set<int> s2 = {3, 4, 5};
Set<int> resultado = {...s1, ...s2};
print(resultado);
} |
{1, 2, 3, 4, 5} |
O operador spread também pode ser usado com a classe Map<K,V>.
Nota: A classe Map<K,V> representa uma coleção de pares chave/valor, a partir da qual podemos retornar valores usando a chave associada.
void main() {
Map<int, String> map1 = {1: 'Paulo', 2: 'Maria'};
Map<int, String> map2 = {2: 'Pedro', 3: 'Ana'};
Map<int, String> resultado = {...map1, ...map2};
print(resultado);
}
|
{1: Paulo, 2: Pedro, 3: Ana}
|
Assim o operador
spread (. . .) torna mais fácil realizar a combinação de coleções
tornando o código mais limpo.
"E Jesus lhe disse: Ninguém, que lança mão do arado e
olha para trás, é apto para o reino de Deus."
Lucas 9:62
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Flutter - Lista Básica - Macoratti
Flutter - Apresentando o widget MaterialApp - Macoratti
Flutter - Apresentando Flutter Studio - Macoratti
Flutter - Apresentando Widgets - Macoratti
Flutter - Criando uma tela de login - Macoratti