Razumijevanje 'Gudačkih literala' u Rubyju

String objekti zadržani naručeni nizovi od bajtova, obično znakova, obično tvore dijelove teksta čitljive s ljudi. Oni su vrlo uobičajena vrsta objekta u svim programskim jezicima i Rubin ima nekoliko visokih i nekoliko načina niske razine za stvaranje, pristup i upravljanje String objektima.

Nizovi se najčešće stvaraju pomoću a Gudački doslovni. doslovan je posebna sintaksa na jeziku Ruby koja stvara objekt specifičnog tipa. Na primjer, 23 je doslovno što stvara aFixnum objekt. Što se tiče Gudačkih literala, postoji nekoliko oblika.

Jedno-citati i dvostruko citirani nizovi

Većina jezika ima string struku sličnu ovome, tako da je ovo možda poznato. Vrste citata, '(pojedinačni citat, apostrof ili tvrdi citat) i "(dvostruki navod ili mekani citat) koriste se za zatvaranje doslovnih nizova, sve što se između njih pretvori u String objekte. Sljedeći primjer to pokazuje.

No, postoje neke razlike između pojedinačnih i dvostrukih navodnika. Dupli citati ili mekani citati omogućuju da se nekakva magija dogodi iza kulisa. Najkorisnija je interpolacija unutar nizova, korisna za umetanje vrijednosti varijable u sredinu niza. To se postiže korištenjem

instagram viewer
#{ … } slijed. Sljedeći će primjer tražiti od vas ime i pozdraviti vas koristeći interpolaciju za umetanje vašeg imena u literalni niz koji je ispisan.

Imajte na umu da bilo koji kôd može ići unutar zagrade, a ne samo imena promjenjivih. Ruby će procijeniti taj kod i sve što bude vratio pokušati će ga umetnuti u string. Pa biste mogli jednako lako reći "Pozdrav, # {get.chomp}" i zaboravite na Ime promjenjiva. No, dobra je praksa da ne stavljate duge izraze unutar narukvica.

Pojedinačni citati, apostrofe ili tvrdi citati mnogo su restriktivniji. Unutar pojedinačnih citata, Ruby neće izvoditi interpolaciju ili bijeg sekvence osim izbjegavanja lika pojedinačnog citata i podvlačenja crte (\' i \\ odnosno). Ako ne namjeravate koristiti interpolaciju, preporuča se češće koristiti pojedinačne navodnike.

Sljedeći će primjer pokušati interpolirati varijablu unutar pojedinih citata.

Ako ovo pokrenete, nećete dobiti grešku, ali što će biti tiskano?

Interpolacijski niz prošao je kroz nerazjašnjeni.

Kada trebam koristiti jednokratne i dvostruke navodnike

To je pitanje stila. Neki radije koriste dvostruke navodnike cijelo vrijeme, osim ako ne postanu neugodni. Drugi bi radije koristili pojedinačne navodnike, osim ako interpolacijsko ponašanje nije namijenjeno. Nema ništa samo po sebi opasno o korištenju dvostrukih navodnika cijelo vrijeme, ali to čini neki kôd lakšim za čitanje. Pri čitanju koda ne trebate čitati niz ako znate da u njemu nema interpolacija jer znate da sam niz neće imati nuspojava. Dakle, koji string doslovni oblik koji koristite ovisi o vama, ovdje nema pravog ispravnog i pogrešnog načina.

Izbjegavanje slijeda

Što ako, u doslovnom nizu, želite uključiti citatni znak? Na primjer, niz "Steve je rekao" Moo! " neće raditi. A niti će "Ne mogu ovo dodirnuti!". Oba ova niza sadrže znak citata unutar niza, čime učinkovito završavaju doslovno niže i uzrokuju pogrešku u sintaksi. Možete zamijeniti znakove citata, poput 'Steve je rekao' Moo! '', ali to zapravo ne rješava problem. Umjesto toga, možete izbjeći bilo koji citatni znak unutar niza i on će izgubiti svoje posebno značenje (u ovom slučaju posebno značenje je zatvaranje niza).

Da biste izbjegli lik, dodajte ga crtanjem unatrag. Znak nagiba unatrag nakazuje Ruby da ignorira bilo kakvo posebno značenje koje može imati sljedeći znak. Ako je riječ o odgovarajućem citatu, ne završavajte niz. Ako je to hash znak, nemojte pokrenuti interpolacijski blok. Sljedeći primjer prikazuje upotrebu crte nagiba za izbjegavanje posebnih znakova.

Znak unatrag (crta unatrag) može se koristiti za uklanjanje bilo kojeg posebnog značenja iz sljedećeg znaka, ali, zbunjujuće je, može se koristiti i za označavanje posebnog ponašanja u žicama s dvostrukim citatima. Većina tih posebnih ponašanja odnosi se na umetanje znakova i nizova bajtova koji se ne mogu upisati ili prikazati vizualno. Nisu sve žice znakovni nizovi ili mogu sadržavati kontrolne sekvence namijenjene terminalu, a ne korisniku. Ruby vam daje mogućnost za umetanje ovih vrsta žica koristeći znak bijega unatrag.

  • \ n - znak novog retka. stavlja metoda to radi automatski, ali ako želite da je umetnete u sredinu niza, ili je niz namijenjen nečem drugom osim stavlja pomoću ove metode možete koristiti za umetanje nove linije u niz.
  • \ t - znak tab. Znak kartice pomiče pokazivač iznad (na većini terminala) na više od 8, tako da je ovo vrlo korisno za prikaz tabelarnih podataka. Međutim, postoje bolji načini za to, pa se upotreba znaka tablice smatra pomalo arhaičnim ili haskijskim.
  • \ nnn - Kosa crta iza tri broja označit će znak ASCII predstavljen s 3 oktalne znamenke. Zašto oktal? Uglavnom iz povijesnih razloga.
  • \ xnn - kosa crta unazad, x i dvije heksade. Isto kao i oktalna verzija, samo sa šesteroznamenkastim brojevima.

Vjerojatno ih nikad nećete koristiti, ali znajte da postoje. I također zapamtite da djeluju samo u nizovima s dvostrukim citatima.

Sljedeća stranica govori o višerednim nizovima i alternativnom sintaksom za doslovno niza.

Višenamjenske žice

Većina jezika ne dopušta višeredne nizove doslovno, ali Ruby to čini. Nema potrebe da prekidate žice i dodate više žica za sljedeći redak. Ruby s višesmjernim literalnim nizovima jednostavno odgovara zadano. sintaksa.

Alternativna sintaksa

Kao i kod većine ostalih literala, Ruby nudi alternativnu sintaksu za string literale. Ako, primjerice, upotrebljavate puno znakova citata u literali, možda biste htjeli upotrijebiti ovu sintaksu. Kad koristite ovu sintaksu pitanje je stila, oni obično nisu potrebni za žice.

Da biste koristili alternativnu sintaksu, upotrijebite sljedeći niz za nizove s jednim citatom % q {…}. Slično tome, upotrijebite sljedeću sintaksu za žice s dvostrukim citiranjem % Q {…}. Ova alternativna sintaksa slijedi sva ista pravila kao i njihovi "normalni" rođaci. Također imajte na umu da umjesto zagrade možete koristiti bilo koje znakove. Ako koristite zagradni, četvrtasti nosač, kutni ugla ili zagrade, tada će odgovarajući znak završiti doslovno. Ako ne želite koristiti odgovarajuće znakove, možete koristiti bilo koji drugi simbol (ništa osim slova ili broja). Bukval će biti zatvoren s drugim istim simbolom. Sljedeći primjer prikazuje nekoliko načina korištenja ove sintakse.

Zamjenska sintaksa također djeluje kao višeredni niz.

instagram story viewer