Forstå 'String Literals' i Ruby

Strenge genstande holder bestilte sekvenser af bytes, typisk tegn, normalt for at danne stykker af menneskelig læseløs tekst. De er en meget almindelig objekttype på alle programmeringssprog, og Rubin har en række måder på højt niveau og et par lavt niveau til at oprette, få adgang til og manipulere strengobjekter.

Strenge oprettes oftest med en Streng bogstavelig. EN bogstavelig er en speciel syntaks i Ruby-sproget, der skaber et objekt af en bestemt type. For eksempel, 23 er en bogstavelig, der skaber enFixnum objekt. Hvad angår strenglitterære, er der flere former.

Enkeltcitater og dobbeltciterede strenge

De fleste sprog har en streng bogstavelig, der ligner dette, så dette kan være velkendt. Typer af citater, '(enkelt citat, apostrof eller hårdt citat) og "(dobbelt citat eller blødt tilbud) bruges til at omslutte strenglitterater, alt mellem dem bliver til strengobjekter. Følgende eksempel viser dette.

Men der er nogle forskelle mellem enkelt- og dobbeltcitater. Dobbelt citater eller

instagram viewer
bløde citater gøre det muligt for noget magi at ske bag kulisserne. Mest nyttigt er interpolering inde i strenge, nyttigt til at indsætte værdien af ​​en variabel i midten af ​​en streng. Dette opnås ved at bruge #{ … } sekvens. Følgende eksempel beder dig om dit navn og hilser dig ved hjælp af interpolering til at indsætte dit navn i den bogstavelige streng, der er trykt.

Bemærk, at enhver kode kan gå inden i seler, ikke kun variabelnavne. Ruby vil evaluere den kode, og uanset hvad der returneres vil den forsøge at indsætte den i strengen. Så du kunne lige så let sige "Hej, # {gets.chomp}" og glem alt om navn variabel. Det er dog god praksis at ikke lægge lange udtryk inden i selerne.

Enkeltcitater, apostrofer eller hårde citater er meget mere restriktive. Inde i de enkelte citater udfører Ruby ingen interpolering eller undslipssekvenser bortset fra at undslippe det eneste citatperspektiv og skære sig selv (\' og \\ henholdsvis). Hvis du ikke har til hensigt at bruge interpolation, anbefales det, at du bruger enkle citater oftere end ikke.

Følgende eksempel forsøger at interpolere en variabel inde i enkeltcitater.

Hvis du kører dette, får du ingen fejl, men hvad udskrives?

Interpolationssekvensen blev passeret gennem ufortolket.

Hvornår skal jeg bruge enkelt- og dobbeltcitater

Dette er et spørgsmål om stil. Nogle foretrækker at bruge dobbelt citater hele tiden, medmindre de bliver ubelejlige. Andre vil hellere bruge enkelte citater, medmindre interpolationsadfærden er tilsigtet. Der er ikke noget iboende farligt om at bruge dobbelt citater hele tiden, men det gør nogle kode lettere at læse. Du behøver ikke at læse en streng, når du læser gennem kode, hvis du ved, at der ikke er nogen interpolationer i den, fordi du ved, at selve strengen ikke vil have nogen bivirkninger. Så hvilken streng bogstavelig form, du bruger, er op til dig, der er ingen rigtig og forkert måde her.

Escape-sekvenser

Hvad hvis du i en bogstavelig streng ønsker at inkludere et citatkarakter? F.eks. Strengen "Steve sagde" Moo! " fungerer ikke. Og heller ikke det 'Kan ikke røre ved dette!'. Begge disse strenge inkluderer citatetegnet inde i strengen, hvilket effektivt afslutter strengen bogstavelig og forårsager en syntaksfejl. Du kan skifte citat tegn, som 'Steve sagde' Moo! '', men det løser ikke rigtig problemet. I stedet kan du undslippe ethvert citatkarakter inde i strengen, og det mister sin specielle betydning (i dette tilfælde er den specielle betydning at lukke strengen).

For at undslippe en karakter skal du afhænge af den med tilbageslagstegnet. Backslash-karakteren fortæller Ruby om at ignorere enhver særlig betydning, som den næste karakter kan have. Hvis det er et matchende tilbudstegn, skal du ikke afslutte strengen. Hvis det er et hash-tegn, skal du ikke starte en interpolationsblok. Følgende eksempel viser denne brug af backslash til at undslippe specialtegn.

Backslash-tegnet kan bruges til at fjerne enhver særlig betydning fra følgende tegn, men forvirrende kan det også bruges til at betegne særlig opførsel i dobbeltciterede strenge. De fleste af disse specielle opførsler har at gøre med at indsætte tegn og bytesekvenser, der ikke kan skrives eller repræsenteres visuelt. Ikke alle strenge er karakterstrenge eller kan indeholde kontrolsekvenser beregnet til terminalen og ikke brugeren. Ruby giver dig mulighed for at indsætte disse typer strenge vha. Tilbagegangsflugtfiguren.

  • \ n - En newline-karakter. Det puts metoden gør dette automatisk, men hvis du vil indsætte en midt i en streng, eller strengen er bestemt til noget andet end puts metode, kan du bruge denne til at indsætte en ny linje i en streng.
  • \ t - En fanekarakter. Tabulatorkarakteren flytter markøren over (på de fleste terminaler) til et multiplum af 8, så dette er meget nyttigt til visning af tabeldata. Der er dog bedre måder at gøre dette på, og brug af fanekarakteren betragtes som en smule arkaisk eller hackish.
  • \ nnn - Et tilbageslag efterfulgt af 3 numre angiver et ASCII-tegn repræsenteret af 3 oktale cifre. Hvorfor oktal? Mest af historiske grunde.
  • \ xnn - Et tilbageslag, et x og 2 hex-cifre. Det samme som den octale version, kun med hex-cifre.

Du bruger sandsynligvis aldrig de fleste af disse, men ved, at de findes. Og husk også, at de kun arbejder i dobbeltciterede strenge.

Den næste side diskuterer strenge med flere linjer og en alternativ syntaks til streng bogstaver.

Multi-line strenge

De fleste sprog tillader ikke flere linjer streng bogstaver, men Ruby gør det. Der er ingen grund til at afslutte dine strenge og tilføje flere strenge til den næste linje. Ruby håndterer flere linjer strenglitterære helt fint med standardindstillingen syntaks.

Alternativ syntaks

Som med de fleste andre bogstaver giver Ruby en alternativ syntaks til strenglitterære. Hvis du f.eks. Bruger en masse citationstegn inden for dine bogstaver, kan du bruge denne syntaks. Når du bruger denne syntaks er et spørgsmål om stil, er de normalt ikke nødvendige til strenge.

Hvis du vil bruge den alternative syntaks, skal du bruge følgende sekvens til enkeltciterede strenge % q {…}. På samme måde skal du bruge følgende syntaks til dobbeltciterede strenge % Q {…}. Denne alternative syntaks følger alle de samme regler som deres "normale" kusiner. Bemærk også, at du kan bruge de tegn, du ønsker, i stedet for seler. Hvis du bruger en søjle, firkantet beslag, vinkelbeslag eller parentes, afslutter det matchende tegn bogstaveligt. Hvis du ikke ønsker at bruge matchende tegn, kan du bruge et hvilket som helst andet symbol (ikke noget bogstav eller tal). Den bogstavelige lukkes med et andet af det samme symbol. Følgende eksempel viser dig flere måder at bruge denne syntaks på.

Den alternative syntaks fungerer også som en flerlinjestreng.

instagram story viewer