Rubriigi keelpillide mõistmine

Stringiobjektid hoiavad tellitud järjestused baiti, tavaliselt tähemärki, tavaliselt inimesest loetava teksti tükkideks. Nad on kõigis programmeerimiskeeltes väga levinud objektitüüp ja Rubiin on String-objektide loomiseks, neile juurdepääsu saamiseks ja nendega manipuleerimiseks mitmeid kõrgeid ja väheseid võimalusi.

Keelpillid luuakse enamasti a-ga String sõnasõnaline. A sõnasõnaline on ruby ​​keeles spetsiaalne süntaks, mis loob konkreetset tüüpi objekti. Näiteks, 23 on täht, mis loobFixnum objekt. Keelpillide puhul on mitu vormi.

Üksiktsitaadid ja topelttsitaadid

Enamikul keeltel on stringi sõna-sõna sarnane, nii et see võib olla tuttav. Hinnapakkumiste tüübid '(üksikpakkumine, apostrofe või kõva tsitaat) ja "(topelt tsitaat või pehme tsitaat) kasutatakse strippude liitmiseks, kõik nende vahel olev muutub stringi objektideks. Järgmine näide näitab seda.

Kuid ühe- ja topeltpakkumiste vahel on mõned erinevused. Topelttsitaadid või pehmed tsitaadid võimaldada võlujõul kulisside taga toimuda. Kõige kasulikum on stringide sisene interpolatsioon, mis on kasulik muutuja väärtuse sisestamiseks stringi keskele. See saavutatakse kasutades rakendust

instagram viewer
#{ … } jada. Järgmine näide küsib teilt oma nime ja tervitab teid, sisestades interpolatsiooni abil oma nime trükitud stringiliiteritesse.

Pange tähele, et breketi sees võib käia iga kood, mitte ainult muutujate nimed. Ruby hindab seda koodi ja mis iganes tagastatakse, proovib ta selle stringi sisestada. Nii et võiksite sama lihtsalt öelda "Tere! # {Gets.chomp}" ja unusta nimi muutuja. Hea tava on aga mitte panna pikki väljendeid trakside sisse.

Üksikud tsitaadid, apostrofid või kõvad tsitaadid on palju piiravamad. Üksikute tsitaatide sees ei teosta Ruby interpoleerimist ega põgenemisjärjestused peale ühe jutumärgi ja kaldkriipsu põgenemise (\' ja \\ vastavalt). Kui te ei kavatse interpoleerimist kasutada, on soovitatav sagedamini kasutada üksikuid jutumärke.

Järgmine näide proovib interpoloerida muutujat üksikute jutumärkide sees.

Selle käivitamisel ei saa te viga, kuid mida prinditakse?

Interpolatsioonijärjestus viidi läbi tõlgendamata.

Millal peaksin kasutama ühe- ja kahekordset pakkumist

See on stiili küsimus. Mõni eelistab kogu aeg kasutada jutumärke, kui need ei muutu ebamugavaks. Teised eelistaksid pigem üksikuid jutumärke, kui pole ette nähtud interpoleerimise käitumist. Selles pole midagi olemuslikku ohtlik topelt jutumärkide kasutamise kohta kogu aeg, kuid see muudab mõne koodi kergemini loetavaks. Koodi lugemisel ei pea stringi lugema, kui teate, et selles pole interpolatsioone, kuna teate, et string ise ei oma mingeid kõrvalmõjusid. Nii et teie kasutatav stringi sõnasõnaline vorm on teie otsustada, siin pole õiget ja valet viisi.

Põgenemisjärjestused

Mis siis, kui soovite stringi-tähtkirjas lisada tsitaatmärgi? Näiteks string "Steve ütles" Moo! " ei tööta. Ja ega see ka mitte "Seda ei saa puudutada!". Mõlemad stringid sisaldavad stringi sees olevat tsitaadimärki, lõpetades stringi sõnasõnalise ja põhjustades süntaksiviga. Võite vahetada jutumärke, nt 'Steve ütles: "Moo!", kuid see ei lahenda tegelikult probleemi. Selle asemel võite põgeneda stringi sees olevate jutumärkide eest ja see kaotab oma erilise tähenduse (sel juhul on eriline tähendus stringi sulgemine).

Märkist pääsemiseks lisage see koos kaldkriipsuga. Kaldkriipsuga tegelane käsib Rubyl ignoreerida mis tahes erilist tähendust, mis järgmisel tegelasel võib olla. Kui see on sobiv tsitaatmärk, ärge lõpetage stringi. Kui see on räsimärk, ärge alustage interpoleerimise plokki. Järgmine näide demonstreerib seda kaldkriipsu kasutamist erimärkidest pääsemiseks.

Kaldkriipsuga tähemärki saab kasutada igasuguse erilise tähenduse eemaldamiseks järgmiselt tähemärgilt, kuid segadust tekitavalt saab seda kasutada ka kahekordse tsitaadiga stringide erikäitumise tähistamiseks. Enamik neist erikäitumisviisidest on seotud märkide ja baidijadade sisestamisega, mida ei saa visuaalselt trükkida ega esitada. Kõik stringid pole tähemärgijärjestused või võivad sisaldada juhtjadasid, mis on mõeldud terminalile ja mitte kasutajale. Rubiin annab teile võimaluse sisestada seda tüüpi stringe, kasutades tagasilöögi märki.

  • \ n - uue rea märk. paneb meetod teeb seda automaatselt, kuid kui soovite selle sisestada stringi keskele või kui string on ette nähtud millekski muuks kui paneb meetodi abil saate selle sisestada stringisse uue rea.
  • \ t - vahelehe märk. Vahelehe märk liigutab kursori (enamikul terminalidel) 8-kordseks, seega on see tabelitabelite kuvamiseks väga kasulik. Selle jaoks on aga paremaid viise ja tabulaadi tähemärgi kasutamist peetakse natuke arhailiseks või häbiväärseks.
  • \ nnn - kaldkriips, millele järgneb 3 numbrit, tähistab ASCII tähemärki, mida tähistavad 3 kaheksanumbrilist numbrit. Miks kaheksajalg? Enamasti ajaloolistel põhjustel.
  • \ xnn - kaldkriips, x ja 2 numbrit. Sama nagu kaheksanumbriline versioon, ainult kuuekohalise numbriga.

Tõenäoliselt ei kasuta te enamikku neist kunagi, kuid teate, et need on olemas. Ja pidage meeles ka seda, et nad töötavad ainult topelt tsiteeritud keelpillides.

Järgmisel lehel käsitletakse mitmerealisi stringe ja stringi literaalide alternatiivset süntaksit.

Mitmerealised stringid

Enamik keeli ei luba mitmerealisi stringi tähtnimesid, kuid Ruby seda lubab. Pole vaja oma stringe lõpetada ja järgmisele reale rohkem stringe lisada, Ruby tegeleb mitmerealiste keelte tähtkirjadega vaikimisi suurepäraselt süntaks.

Alternatiivne süntaks

Nagu enamiku teiste literaalide puhul, pakub ka Ruby stringi literaalide jaoks alternatiivset süntaksit. Kui kasutate näiteks literraatides palju tsitaadimärke, võiksite kasutada seda süntaksit. Kui kasutate seda süntaksit, on see stiiliküsimus, stringi jaoks pole neid tavaliselt vaja.

Alternatiivse süntaksi kasutamiseks kasutage ühe tsiteeritud stringide jaoks järgmist järjestust % q {…}. Samamoodi kasutage järgmist süntaksi topelt tsiteeritud stringide jaoks % Q {…}. See alternatiivne süntaks järgib samu reegleid nagu nende "tavalised" nõod. Samuti pange tähele, et breketite asemel võite kasutada mis tahes märke. Kui kasutate traksidega, nurksulgu, nurksulgu või sulgu, siis lõpeb vastav märk sõna otseses mõttes. Kui te ei soovi kasutada sobivaid tähemärke, võite kasutada mis tahes muud sümbolit (kõike muud kui tähte või numbrit). Sõnaosa suletakse teise sama sümboliga. Järgmine näide näitab selle süntaksi kasutamist mitmel viisil.

Alternatiivne süntaks töötab ka mitmerealise stringina.

instagram story viewer