Dart Streams

Dart Streams
Um fluxo na linguagem de programação do DART é definido como uma série de eventos assíncronos. É muito parecido com a estrutura de dados iterável. No entanto, a principal diferença entre um fluxo e um iterável é que, no caso do último, você precisa pedir manualmente os próximos eventos, enquanto, no caso do primeiro, o próprio fluxo continua dizendo que o próximo Evento está pronto. Este processo continua até que não haja mais eventos no fluxo a serem lidos. Os fluxos de dardo também se assemelham a tubos nos quais você insere um valor de uma extremidade, e esse valor é lido pelo receptor na outra extremidade. Neste tutorial, aprenderemos o uso básico dos fluxos na linguagem de programação do DART no Ubuntu 20.04.

Como usar os fluxos na linguagem de programação do DART no Ubuntu 20.04?

Para usar os fluxos na linguagem de programação do DART de maneira eficaz, você precisa entender os dois exemplos a seguir que foram implementados em um Ubuntu 20.04 Sistema:

Exemplo # 1: Criando um fluxo de dardo para calcular a soma de múltiplos números inteiros

Neste exemplo, criaremos um fluxo de dardo que continuará lendo números inteiros até que existam e, assim que lê um novo, ele acrescentará isso aos existentes. Esse processo continuará até que não haja mais números inteiros, após o que você poderá obter a soma de todos esses números inteiros. Você poderá entendê -lo claramente passando pelo script de dardo mostrado na imagem abaixo:

Neste exemplo, criamos primeiro um tipo inteiro "futuro", eu.e., É capaz de retornar um valor inteiro que é "soma" neste caso. Nomeamos este futuro “Sumstream.”Isso é capaz de aceitar um fluxo de números inteiros. Então, também usamos a palavra -chave "assíncrona" enquanto definimos este futuro. Essa palavra -chave é usada sempre que você quiser usar o loop "aguarda por" dentro de um script. Dentro deste futuro, criamos uma variável chamada "soma" e a inicializamos com "0" para que não contenha nenhum valor de lixo.

Então, fizemos uso do loop "aguardar por". Este loop continuará correndo enquanto houver mais elementos em nosso fluxo inteiro. Esse loop basicamente itera sobre o fluxo inteiro que foi passado para o nosso futuro. Dentro deste loop, estamos calculando a soma de todos os valores do fluxo inteiro. Esse loop quebrará quando não houver mais elementos dentro do fluxo, após o que esse futuro retornará a "soma" à função "main ()".

Em seguida, declaramos a função "main ()" com o tipo de retorno "futuro" e também usamos a palavra -chave "assíncrona" com sua declaração. Depois disso, declaramos e inicializamos um fluxo de quatro números inteiros diferentes em nossa função de driver. Em seguida, criamos uma variável de "soma" para manter o resultado do futuro "Sumstream". Nós chamamos esse futuro com a palavra -chave "aguardar" enquanto passava o fluxo inteiro para ela. Finalmente, usamos uma declaração "impressa" para imprimir o resultado deste script, eu.e., a soma do fluxo inteiro no terminal.

Para a execução deste script de dardo, utilizamos o comando subsequente:

$ dart run streams.dardo

A saída do nosso script de dardo, eu.e., A soma do nosso fluxo inteiro é mostrada na imagem abaixo:

Exemplo # 2: Criando um fluxo de dardo para calcular o produto de múltiplos números inteiros

Neste exemplo, queremos criar um fluxo de dardo para calcular o produto de vários números inteiros. Este exemplo é praticamente semelhante ao nosso primeiro exemplo em termos de uso dos fluxos de dardos; No entanto, sua lógica principal, eu.e., O cálculo do produto será diferente do primeiro exemplo. O script de dardo a seguir explica esta funcionalidade:

Em nosso segundo exemplo, declaramos um futuro de dardo com o tipo de retorno inteiro. Nomeamos esse futuro "ProductStream" e este futuro tomará um fluxo inteiro como entrada. Novamente, usamos a palavra -chave "assíncrona", já que usaremos o loop "aguardar por" em nosso futuro. Dentro deste futuro, declaramos uma variável chamada "Produto" e atribuímos a ele o valor "1". Desta vez, não inicializamos essa variável com "0" como fizemos no caso da soma. É assim porque multiplicar qualquer número com "0" reduz toda a saída para "0". É exatamente por isso que precisamos manter o valor dessa variável "1" se desejarmos multiplicar os elementos do fluxo inteiro.

Em seguida, usamos um loop "aguardando" que itera o fluxo inteiro que foi passado para este futuro. Dentro deste loop, estamos calculando o produto de todos os elementos do nosso fluxo inteiro. Esses elementos são lidos um por um, e o valor da variável "produto" é atualizado. Finalmente, quando todos os elementos do fluxo inteiro forem lidos, esse futuro retornará o produto de todos esses números inteiros à função "main ()".

Então, em nossa função "Main ()", declaramos um fluxo de três números inteiros. Depois disso, criamos uma variável de "produto" para manter o resultado do nosso futuro "ProductStream". Agora, imprimimos o resultado da variável "produto" no terminal.

A imagem mostrada abaixo exibe a saída do nosso futuro "ProductStream", eu.e., o produto de todos os elementos do nosso fluxo inteiro.

Conclusão

Este artigo foi projetado para compartilhar com você um conceito relativamente novo associado à linguagem de programação do DART, eu.e., Dart Streams. Para tornar esse conceito compreensível para você, implementamos dois exemplos simples no Ubuntu 20.04 e explicaram os dois em profundidade. Depois de passar por esses dois exemplos, você poderá entender o conceito de fluxos na linguagem de programação do DART muito bem.