3 comportamente neașteptate folosind Ruby

În acest articol vom explora următoarele subiecte:

Înainte de a începe

Sunt încântat să vă împărtășesc cel mai recent proiect: Fun Facts about Ruby – Volumul 1

Vă rugăm să nu ezitați să răspândiți vestea și să distribuiți această postare! ?

Vă mulțumim pentru timpul acordat!

Introducere

În Ruby, ceea ce numesc un comportament neașteptat este un comportament care nu pare natural la început.

Aceasta înseamnă că, cu un pic de cunoștințe despre ceea ce se întâmplă în spatele scenei. suntem capabili să înțelegem scopul acestor alegeri.

În acest articol vom prezenta trei exemple de comportamente neașteptate folosind Ruby.

Returnează valorile dintr-o clauză assure

În Ruby, valoarea ultimei instrucțiuni evaluate este utilizată ca valoare de returnare a metodei apelate dacă nu există un apel explicit la return

Aici, rezultatul operației 21 + 21 este utilizat ca valoare de returnare a metodei add .

De aceea, un apel către metoda add returnează 42 .

Dar, ce se întâmplă atunci când este evaluată ultima afirmație a unei clauze de asigurare ?

Ultima declarație evaluată a apelului metodei henry.hello (& # x27; TJ Dillashaw & # x27;) este & quot; hello # {@ name} & quot; interpolare de șiruri în cadrul clauzei assure .

Deci, ne-am aștepta ca apelul către henry.hello (& # x27; TJ Dillashaw & # x27;) să returneze & quot; hello TJ Dillashaw & quot; .

Dar, returnează & quot; TJ Dillashaw & quot; , care este rezultatul atribuirii @name = name .

Deci, trebuie să folosim în mod explicit cuvântul cheie return dacă dorim să returnăm valoarea clauzei assure

Variabile declarate într-un bloc condițional

Variabilele declarate într-un bloc condițional care nu este niciodată evaluat sunt inițializate cu o valoare nul implicită

Aici, variabila champ este inițializată cu o valoare nul , chiar dacă conținutul blocului condițional if nu este niciodată evaluat.

În acest caz, ne-am aștepta ca următoarea eroare să fie ridicată:

Acest comportament se datorează faptului că codul dvs. Ruby trebuie mai întâi analizat înainte de a putea fi rulat.

În acest stadiu își are originea comportamentul pe care îl experimentați.

Pe măsură ce analizorul analizează codul, ori de câte ori întâlnește o declarație de variabilă, atunci alocă spațiu pentru acea variabilă setându-și valoarea la zero .

String # to_i vs Integer(String)

Metoda String # to_i este utilizată pentru a converti reprezentarea șirului unui număr într-un Integer

Funcționează conform așteptărilor.

Dar dacă șirul care apelează metoda <>to_i nu reprezintă reprezentarea unui număr?

Aici putem vedea că & quot; un șir & quot; .to_i returnează 0 .

Ne-am aștepta ca acest apel de metodă să returneze zero - sau să ridice o eroare.

Pentru a face acest lucru, putem folosi metoda Kernel # Integer () .

Această metodă creează un TypeError dacă șirul transmis nu este strict conform cu reprezentarea numerică

Voilà!

UN MAI MULTE ⬇

Nu ezitați să vă abonați aici: www.rubycademy.com

Vă mulțumim că ați acordat timp pentru a citi această postare 🙂

Simțiți-vă liber să ? și să distribuiți acest articol dacă v-a fost util. ?

De asemenea, pe măsură ce postez un articol la fiecare 3 zile, nu ezitați să mă urmați pentru a fi informat despre noile mele versiuni de articole.

Iată un link către ultimul meu articol:

Înțelegerea clasei Eigenclass în mai puțin de 5 minute