Ruby è un linguaggio di programmazione incredibile pieno di caratteristiche e strumenti moderni per la maggior parte degli ambienti di sviluppo. Ruby ha una funzione potente e spesso trascurata: blocchi.
L'essenza di questo articolo è discutere e capire quali sono i blocchi di rubini, come funzionano e come possiamo usarli nei nostri programmi Ruby.
Inizieremo con la sintassi di base e quindi discuteremo di funzionalità come il rendimento, che possono essere intimidatorie per i nuovi utenti di Ruby.
Cosa sono i blocchi di rubini?
Come nel caso di altri linguaggi di programmazione, un blocco o una chiusura è una funzione anonima che si racchiude all'interno di parole chiave DO e fine per blocchi in linea.
I blocchi consentono di raggruppare un blocco di codice in componenti separati che è possibile passare durante la chiamata del metodo come parametri.
Esistono due modi per definire un blocco in Ruby: il primo è usare la parola chiave DO ... End, l'altro sta usando una coppia di bretelle.
Do ... il blocco finale viene utilizzato principalmente quando si definisce un blocco di codice che si estende a più righe, mentre le parentesi graffe vengono utilizzate quando si definiscono un blocco di codice che si estende.
Passano gli argomenti di un blocco tra una coppia di personaggi di pipa | |
SUGGERIMENTO: Se si utilizza una singola riga o un blocco multi-riga, la funzionalità non cambia. Tuttavia, per scopi di leggibilità, utilizzare le parentesi graffe per un blocco di riga singolo e do-end per blocchi multiline.
Esempio di base
Di seguito sono riportati due semplici esempi di un blocco rubino, uno che usa le parentesi graffe mentre l'altro usa ... end.
# linea singola -Entrambi gli esempi sopra producono risultati simili:
L'esempio sopra applica i blocchi di rubini nella forma più semplice: passiamo il blocco in ciascun metodo dell'oggetto array. Passa gli argomenti del blocco all'interno di una coppia di caratteri tubo; Nell'esempio sopra, l'argomento è io. Infine, emettiamo la funzionalità del blocco all'interno del corpo del blocco (in questo esempio, mette).
Comprensione della parola chiave di rubino
È possibile utilizzare i blocchi di rubini all'interno di un metodo standard. La funzionalità per eseguire quell'azione è per gentile concessione della parola chiave di rendimento.
Discutiamo in dettaglio la parola chiave di rendimento.
Cos'è la resa in Ruby?
Il rendimento delle parole chiave in Ruby consente di chiamare un blocco definito all'interno di un metodo Ruby.
Come funziona
Consideriamo un esempio che ci aiuterà a capire come funzionano la parola chiave di rendimento. Considera il semplice metodo Ruby mostrato di seguito:
defL'esempio sopra è un semplice metodo Ruby che stampa “Ciao!".
Se vogliamo aggiungere maggiore flessibilità al programma, possiamo consentire all'utente di passare un argomento durante l'invocazione del metodo.
Quindi, possiamo codificare il metodo come:
def hello (nome)Nel secondo esempio, abbiamo un po 'di flessibilità in quanto possiamo passare qualsiasi nome al metodo come argomento.
Possiamo estenderlo ulteriormente usando un blocco Ruby. Quando passiamo il blocco all'interno del metodo, verrà eseguito e restituirà i risultati.
Definizione del metodo di rendimento
Per creare un metodo che accetta un blocco, utilizziamo il rendimento delle parole chiave. La sintassi generale è come mostrato:
defSu definizione, possiamo chiamare il metodo e passare un blocco di codice. Il metodo eseguirà il codice e restituirà il risultato.
Passando un blocco Ruby a un metodo
Possiamo passare un blocco al metodo usando la sintassi del blocco. Ad esempio, possiamo chiamare il metodo sopra con una sintassi come:
ciao mette "ciao mondo"Finché il metodo contiene la parola chiave di rendimento, è possibile passare qualsiasi blocco di codice ed eseguirlo.
NOTA: Una volta definita una parola chiave di rendimento all'interno di un metodo, è necessario passare un blocco quando si chiama il metodo. Altrimenti, otterrai un errore "nessun blocco dato (rendimento)".
Esempio 2
Facciamo un altro esempio:
defL'esempio sopra illustra come funziona l'esecuzione di un metodo usando il rendimento. L'output del programma è di seguito:
prima della resaArgomenti di Ruby Block
Ruby ti consente di passare argomenti al blocco Ruby. Gli argomenti del blocco sono definiti nel blocco di resa e fungono da parametri del blocco.
L'ordine in cui si passa l'argomento è fondamentale in quanto il blocco li accetterà nell'ordine impostato.
defI parametri definiti all'interno del blocco hanno un ambito locale e sono disponibili solo nel contesto del blocco.
Quindi, otterrai una variabile indefinita usata all'esterno dell'ambito del blocco.
Esempio 3
La funzionalità del blocco non cambia su blocchi a linea singola o multipla. Possiamo illustrare questo usando l'esempio seguente:
area defL'output dall'esempio sopra è:
L'area del Cirle è 21.99113cm2Ciò dimostra che i blocchi multi-line o singole, la funzionalità rimane la stessa.
Blocchi espliciti
Negli esempi precedenti, abbiamo definito i blocchi come impliciti. Tuttavia, possiamo anche descriverli come espliciti.
I blocchi espliciti significano che assegniamo un nome all'elenco dei parametri del metodo.
Def Esempio (& Block)Passa il nome del blocco all'interno dopo l'ampa e. Usando il nome del blocco, è possibile passare il blocco salvato a un altro metodo.
Blocca la gestione degli errori
Nelle sezioni precedenti, abbiamo menzionato che il blocco di resa è obbligatorio. Tuttavia, è possibile implementare una semplice logica di gestione degli errori se viene fornito il rendimento. Lo facciamo usando Block_Given? Metodo del kernel.
Il metodo restituisce un valore booleano di true se il rendimento è disponibile e falso se non diversamente.
Considera il semplice esempio di seguito:
defSe chiamiamo il metodo con il valore del rendimento richiesto, l'output sarà:
ciao mette "ciao lì!"D'altra parte, chiamare il metodo senza rendimento eseguirà il blocco else come:
CiaoUsando il valore da block_given? Metodo, è possibile implementare la logica di gestione degli errori quando non esiste un valore di snervamento.
Conclusione
In questa guida, abbiamo discusso di Ruby Blocks, cosa sono, come funzionano e come usarli nei tuoi progetti.
Grazie per la lettura!