O que é compreensão em Scala no Ubuntu 20.04
O formato para (enumeradores) fornece "e" em compreensões onde os enumeradores são uma lista de enumeradores que é separados por semicolons. Um gerador que adiciona novas variáveis é um enumerador, enquanto um filtro é um enumerador. Toda ligação criada pelos enumeradores é avaliada por uma compreensão, que então produz uma sequência de valores para cada valor.
Sintaxe da compreensão for em Scala
Somos direcionados por essas definições para os conceitos de definições, filtros e geradores para compreensão. Um Scala para compreensão inclui as três expressões a seguir:
Geradores
Geradores são como iteradores que iteram sobre todos os elementos. Aqui estão dois outros fatos sobre geradores: (1) Um gerador é o primeiro passo em todas as compreensão; (2) múltiplos geradores são usados para compreensão.
Filtros
Os filtros assumem a forma de condições booleanas dentro de uma compreensão para. Um filtro serve como guarda, impedindo que todos os valores sejam usados que violem a condição booleana. Toda variável que é acessível dentro do escopo da compreensão for usada para construir uma condição booleana personalizada dentro de um filtro.
Definições
A definição é algo que usamos para explicar com precisão o que é que desejamos realizar ou fazer. Por exemplo, podemos incluir todas as operações que desejamos realizar na parte definidora.
Exemplo 1: Usando para a compreensão com rendimentos
Para construir uma nova coleção a partir de uma coleção existente, combine o loop for for loop, seu algoritmo e uma declaração de rendimento. A para a compreensão é a aplicação de um loop for com uma declaração de rendimento. Coloque o trabalho em um bloco após a palavra -chave de rendimento se sua abordagem exigir inúmeras linhas de código:
Criamos o objeto como "Demo1", onde temos uma definição da função principal. Dentro disso, construímos a classe de caso "sujeito". A classe possui dois atributos: o "nome" definido para o tipo de string e o "artigo" atribuído ao tipo "int". Depois disso, declaramos uma variável "SubjectBase" que tem a representação da lista. A lista é inicializada com o nome dos três assuntos e números de artigo, respectivamente.
Em seguida, definimos o gerador, a definição e o filtro dentro da compreensão for definida na variável "morethanten". Dentro da compreensão para. Então, temos uma declaração "se" que indica o filtro aqui. A declaração "se" que tem o "assunto.Artigo> = 10 && Assunto.artigo< 20 ” condition means that the article that doesn't seem to be between 10 and 20 is filtered away.
Abaixo da compreensão para a compreensão, utilizamos a palavra-chave "rendimento" que adiciona o assunto.nome. Desde o assunto.Nome é uma string, o operador de rendimento reúne o resultado como uma lista [string].
Na saída, você pode visualizar a lista de nomes de sujeitos gerados como maior que o artigo número 10 e menor que o artigo número 20.
Exemplo 2: Usando para a compreensão sem rendimentos em Scala
Podemos deixar de fora o rendimento em compreensão. Quando isso acontece, a compreensão devolve uma unidade. Se queremos executar os efeitos colaterais, isso pode ser útil. Aqui está um programa semelhante que não usa rendimento:
Iniciamos o objeto do programa como "Demo2". Nisso, temos a definição principal do método. Dentro do método principal, temos outra definição de função. A função é definida como "verificar" que leva a variável "x" como uma entrada e a define com o tipo de int. Atribuímos a compreensão para esta função. A compreensão for o gerador e o filtro. O gerador tem a iteração por i e j.
Então, a condição "i*j> = x" é realizada aqui se a condição for protegida como um filtro. À medida que atribuímos o valor da variável "X" como "5". Na iteração inicial, eu e j são zero. Portanto, i * j não é maior que x, e nada é assim rendido. Antes de ser aumentado para 1, J é aumentado mais três vezes. Ambos os valores de i e j em cada iteração até que a condição seja satisfeita e seja impressa pelo método println.
O compilador Scala após a compilação produz os seguintes resultados:
Exemplo 3: Usando para a compreensão com dois geradores em Scala
Aqui está outro exemplo em que empregamos dois geradores na "compra para compreensão", mas com a palavra-chave de rendimento.
Neste exemplo, temos uma definição de função "Produto" desenvolvido para calcular todos os pares de números que variam entre 0 e X-1 cujo produto corresponde a um valor especificado y. Temos dois geradores, i e j, que aumentam em 1 até x como indicado na compreensão for. Em seguida, usamos o filtro conforme necessário. Iteramos através da lista com o loop para cada loop e destruímos cada membro como (i, j). Em seguida, emitir os pares.
Também criamos a lista que o método retornou sem filtros para mostrar os estágios que os geradores eu e j tomam. Os resultados demonstram que, enquanto um dos geradores aumenta no N-1, o outro permanece fixo. O segundo gerador aumenta em 1 quando o primeiro chega a N-1.
Você pode ver a saída da lista gerada com e sem o filtro na compreensão for a seguir:
Conclusão
As diferentes capacidades e funcionalidade das compreensões de Scala foram, assim, informadas para nós através do artigo acima mencionado. Com o auxílio de vários exemplos, demonstramos as várias vantagens do uso da compreensão do Scala no modelo de programação Scala. Depois disso, aprendemos sobre as muitas capacidades e como o rendimento opera. Como resultado, agora poderemos criar o código enquanto também usando a compreensão do Scala.