Scala implicitamente

Scala implicitamente
“Tutti quelli che imparano o adottano il linguaggio del computer Scala alla fine incontrano l'identificatore implicitamente. Tuttavia, relativamente pochi prendono il tempo per comprenderne pienamente il significato. Questa guida analizzerà quindi la semantica e gli usi principali della funzione implicitamente. Funziona implicitamente essenzialmente come "compilatore per impliciti."Se esiste un tipo di valore implicito" t ", possiamo confermarlo. Il compilatore ci avviserà della situazione se non esiste un valore implicito di tipo "t" disponibile nell'ambito. Questa è un'opzione utile che dobbiamo determinare se il valore di un tipo specifico è accessibile nell'ambito implicito."

Sintassi della parola chiave implicitamente in Scala in Ubuntu 20.04

Per costruire esempi espliciti e concreti di disponibilità dei tipi, un metodo di utilità è incluso nella libreria standard Scala. Inoltre, implicito è il nome del metodo. Nota che Scala versione 2.8 introduce implicitamente, che è descritto in predef come:

def implicitamente [t] (implicito e: t) = e

Esempio n. 1: programma di parole chiave implicitamente chiave in Ubuntu 20.04

Ecco una breve illustrazione dalla presentazione di Retronyms:

In modalità Scala Repl, abbiamo chiamato la variabile "X" con una parola chiave implicita e la inizializzata con la stringa. Abbiamo specificato un valore implicito della stringa digitata. Il tipo viene restituito quando viene eseguita la riga di codice. Successivamente, abbiamo cercato il valore implicito della stringa digitata passandolo nella funzione implicitamente e quindi assegnata alla variabile "y". Il compilatore ha restituito il valore della stringa "demo" mentre memorizzava questo valore. Successivamente, abbiamo trovato il valore implicito del tipo "int" e impostarlo all'interno della variabile "z". Alla compilazione, genera un errore "non è possibile trovare il valore implicito per il parametro int".

Esempio n. 2: programma di comprensione e risoluzione di un problema di viste implicite in Scala in Ubuntu 20.04

Quando un prefisso di una selezione (ad esempio, il.prefisso.La selezione (args) non ha una selezione dei membri applicabile agli args) è vuota, una visione implicita può essere attivata (anche dopo aver tentato di convertire gli argomenti usando le viste implicite). Quando ciò accade, il compilatore cerca membri impliciti che sono simili ai metodi impliciti o alle funzioni da un tipo con una selezione dichiarata, dichiarata localmente nella corrente o ampli che sono racchiusi, ereditati o importati.

Qui, abbiamo superato il valore "3" all'interno del 1.min () come "int" non ha definizione di min. Il tipo di risultato INT genera il valore "1". Quindi, abbiamo usato la parola chiave implicitamente per l'int, che ha la definizione MIN. Ha restituito il tipo implicito "int" come . Successivamente, abbiamo eseguito il Res2 (1), che individuarà il valore implicito presente nella definizione di AnyRef. Alla fine, abbiamo usato il .Metodo GetClass, che ha restituito Scala.Runtime.Classe Richint.

Inoltre, quando un'espressione si discosta dal tipo atteso, è possibile attivare viste implicite, come mostrato di seguito:

Abbiamo assegnato la scala.Runtime.Dichiarazione Richint al valore "1" che in esecuzione ha fornito il valore implicito "1"

Questa funzione è richiesta dal compilatore in questo caso:

La scala.Runtime.Richint viene quindi assegnato al tipo INT all'interno della funzione implicitamente e fornisce l'uscita AS.

Esempio n. 3: programma di accesso a un parametro implicito indotto dal contesto in Ubuntu 20.04

I parametri impliciti di Scala potrebbero anche essere più significativi delle sue viste implicite. Sono di tipo Class Cody-Pattern. Questo è utilizzato sporadicamente nella libreria standard; vedi Scala come l'ordine viene impiegato in seqlike#ordinato. I manifesti dell'array e gli oggetti Canbuildfrom vengono anche passati usando parametri impliciti.

I limiti di contesto sono una sintassi di scorciatoia che Scala 2.8 offerte per argomenti impliciti. In breve, un metodo che richiede un input implicito di tipo y [x]

Il parametro implicito viene superato, ma non è nominato. Quando si applica il metodo foo, esattamente questo può essere utile? È comune che il parametro implicito venga inviato come parametro implicito a un'altra funzione che viene chiamato invece di dover essere esplicitamente menzionato. Per materializzare il valore, puoi chiamare implicitamente mantenendo la definizione del metodo conciso con il contesto limitato.

Esempio n. 4: programma di fornitura di input espliciti a una parte dei parametri impliciti Scala in Ubuntu 20.04

Prendi in considerazione il seguente scenario quando si utilizza un approccio basato su classe di tipo e invocando un metodo che stampa bene uno studente dettagli:

Abbiamo definito il "display" del tratto Scala che ha la definizione del display mentre prende il tipo "T" e assegna il valore "1" ad esso. Quindi, abbiamo creato l'oggetto "visualizza" in cui vengono stabilite le funzioni implicite. La prima funzione implicita è dichiarata come "intdisplay" che ha la definizione "int". Questa funzione è impostata con la nuova parola chiave per il display [int], che restituirà la rappresentazione della stringa.

Quindi, abbiamo stabilito un'altra funzione implicita come "StringDisplay" per la definizione di stringa. Successivamente, abbiamo la funzione "MyStringDisplay" che ha il touppercase per la conversione in maiuscolo. Successivamente, abbiamo costruito la classe Case "Studente" e impostato i suoi attributi "Nome" con il tipo di dati "String" e "Age" con il tipo "Int".

Abbiamo implementato l'oggetto "Studente", all'interno della quale è definita la funzione implicita di "StudentDisplay". La funzione ha assegnato due variabili, "DI" per il display intero e "ds" per la visualizzazione della stringa. Questa funzione implicita ha una funzione nidificata "display" che crea l'oggetto "s" per la classe "studente". Il DS.il display prende l'ingresso “S.nome "e il DI.il display prende il “s.Parametro di età ". Infine, la variabile "S" imposta i valori degli attributi "nome" e "età" per la classe "studente". Con la funzione implicitamente, abbiamo mostrato i valori "studente".

Scala repl Res6 ha mostrato i risultati dei valori impliciti della classe "studente" come segue:

Cosa succede se desideriamo modificare come il nome è il risultato? Sebbene possiamo utilizzare direttamente StudentDisplay e fornire un display diverso [String], preferiamo che il compilatore passi il display [int].

I seguenti risultati sono ottenuti se utilizziamo il pezzo di cui sopra nel codice precedente.

Conclusione

In questo post, abbiamo discusso della funzione implicitamente, che fa parte di Scala dalla versione 2.8. In primo luogo, abbiamo iniziato a dimostrare il ruolo fondamentale della funzione come "compilatore per implicito". Questo metodo implicitamente anticipa semplicemente un parametro di tipo, individua il valore implicito presente nell'ambito, lo evoca e lo restituisce a noi. La tecnica estremamente di base dovrebbe essere utilizzata implicitamente per i seguenti motivi.