Sintaxe da palavra -chave implicitamente.04
Para construir exemplos explícitos e concretos de disponibilidade de tipos, um método de utilidade está incluído na Biblioteca Padrão Scala. Além disso, implícito é o nome do método. Observe que a versão 2 do Scala 2.8 Introduz implicitamente, descrito em Prefef como:
def implicitamente [t] (implícito e: t) = eExemplo # 1: Programa de palavra -chave implicitamente Scala no Ubuntu 20.04
Aqui está uma breve ilustração da apresentação dos retrônimos:
Para o modo Scala Repl, chamamos a variável "x" com uma palavra -chave implícita e a inicializamos com a string. Especificamos um valor implícito da string digitada. O tipo é retornado quando a linha de código é executada. Depois disso, procuramos o valor implícito da string digitada, passando -o na função implicitamente e depois o atribuímos à variável "y". O compilador retornou o valor da string "Demo", pois armazenava este valor. Em seguida, encontramos o valor implícito do tipo "int" e o colocamos dentro da variável "z". Na compilação, gera um erro "não conseguiu encontrar o valor implícito para o parâmetro int".
Exemplo # 2: Programa de compreender e resolver um problema de visualizações implícitas em Scala no Ubuntu 20.04
Quando o prefixo de uma seleção (por exemplo, o.prefixo.A seleção (ARGS) não possui uma seleção de membros aplicáveis ao args) está vazia, uma visão implícita pode ser acionada (mesmo depois de tentar converter os argumentos usando as visualizações implícitas). Quando isso acontece, o compilador procura membros implícitos que sejam semelhantes a métodos ou funções implícitos de um tipo com uma seleção declarada, declarada localmente na corrente, ou escopos fechados, herdados ou importados.
Aqui, passamos o valor "3" dentro do 1.min () como "int" não tem definição de min. O resultado do resultado gera o valor "1". Em seguida, usamos a palavra -chave implicitamente para o int, que tem a definição Min. Retornou o tipo implícito "int" como . Depois disso, executamos o RES2 (1), que localizará o valor implícito presente na definição de AnyRef. No final, usamos o .Método GetClass, que devolveu o Scala.tempo de execução.Richint Class.
Além disso, quando uma expressão se desvia do tipo esperado, vistas implícitas podem ser acionadas, como mostrado abaixo:
Nós atribuímos o scala.tempo de execução.Richint Declaração para o valor "1" que na execução forneceu o valor implícito "1"
Esta função é exigida pelo compilador neste caso:
O scala.tempo de execução.Richint é então atribuído ao tipo int dentro da função implicitamente e fornece a saída como saída.
Exemplo # 3: Programa de acesso a um parâmetro implícito induzido pelo contexto Scala no Ubuntu 20.04
Os parâmetros implícitos de Scala podem até ser mais significativos do que suas visões implícitas. Eles são compatíveis com o padrão de classe. Isso é utilizado esporadicamente na biblioteca padrão; Veja Scala como a ordem é empregada em seq -like#classificada. Manifestos de matriz e objetos canbuildfrom também são passados usando parâmetros implícitos.
Limites de contexto é uma sintaxe de atalho que Scala 2.8 ofertas para argumentos implícitos. Em poucas palavras, um método que exige uma entrada implícita do tipo y [x]
O parâmetro implícito é passado, mas não é nomeado. Ao aplicar o método foo, exatamente isso pode ser útil? É comum que o parâmetro implícito seja enviado como um parâmetro implícito para outra função que é chamada, em vez de ter que ser explicitamente mencionado. Para materializar o valor, você pode chamar implicitamente, mantendo a definição concisa do método com o contexto limitado.
Exemplo # 4: Programa de dar contribuição explícita a uma parte dos parâmetros implícitos Scala no Ubuntu 20.04
Considere o seguinte cenário ao utilizar uma abordagem baseada em classe e invocar um método que imprime um detalhe do aluno:
Definimos o traço de Scala "Display", que tem a definição da tela, pois leva o tipo "T" e atribui o valor "1" a ele. Em seguida, criamos o objeto "exibição" onde as funções implícitas são estabelecidas. A primeira função implícita é declarada como "intdisplay", que tem a definição "int". Esta função é definida com a nova palavra -chave para a tela [int], que retornará a representação da string.
Em seguida, estabelecemos outra função implícita como "StringDisplay" para a definição de string. Em seguida, temos a função "MyStringDisplay", que tem a ToupPercase para a conversão em maiúsculas. Depois disso, construímos a classe de caso "aluno" e definimos seus atributos "nome" com o tipo de dados "string" e "idade" com o tipo "int".
Implementamos o objeto "aluno", dentro do qual a função implícita de "StudentDisplay" é definida. A função atribuiu duas variáveis, "DI" para exibição inteira e "ds" para a exibição de string. Essa função implícita tem uma função aninhada "Display", que cria o objeto "S" para a aula "Student". O ds.a tela leva a entrada “S.nome ”e o di.a tela leva o “S.parâmetro de idade ”. Por fim, a variável “S” define os valores dos atributos “Nome” e “Age” para a classe “aluno”. Com a função implicitamente, exibimos os valores de "aluno".
O Scala Repl Res6 exibiu os resultados dos valores implícitos da classe “aluno” da seguinte forma:
O que acontece se desejarmos alterar como o nome é o resultado? Embora possamos usar diretamente o StudentDisplay e fornecer uma tela diferente [String], preferimos que o compilador passe na tela [int].
Os seguintes resultados são obtidos se empregarmos a parte acima da linha no código anterior.
Conclusão
Neste post, discutimos a função implicitamente, que faz parte do Scala desde a versão 2.8. Primeiro, começamos a demonstrar o papel fundamental da função como um "compilador para implícito". Esse método implicitamente apenas antecipa um parâmetro de tipo, localiza o valor implícito presente no escopo, convoca -o e o devolve. A técnica extremamente básica deve ser usada implicitamente pelos seguintes motivos.