Forstå 'String Literals' i Ruby

click fraud protection

Strengeobjekter holder bestilte sekvenser av byte, typisk tegn, vanligvis for å danne deler av menneskelig lesbar tekst. De er en veldig vanlig objekttype på alle programmeringsspråk, og Rubin har en rekke måter på høyt nivå og noen få nivåer for å lage, få tilgang til og manipulere strengobjekter.

Strenger er ofte laget med en Streng bokstavelig. EN bokstavelig er en spesiell syntaks på Ruby-språket som lager et objekt av en bestemt type. For eksempel, 23 er en bokstavelig som skaper enFixnum gjenstand. Når det gjelder String literals, er det flere former.

Enkelt sitater og dobbelt sitert strenger

De fleste språk har en streng-bokstav som ligner på dette, så dette kan være kjent. Typene sitater, '(enkelt sitat, apostrof eller vanskelig sitat) og "(dobbelt sitat eller mykt sitat) brukes til å omslutte strenglitterater, alt mellom dem blir omgjort til strengobjekter. Følgende eksempel viser dette.

Men det er noen forskjeller mellom enkelt- og dobbelt sitater. Doble sitater eller myke sitater

instagram viewer
gjøre det mulig for litt magi å skje bak kulissene. Mest nyttig er interpolering inne i strenger, nyttig for å sette verdien av en variabel i midten av en streng. Dette oppnås ved å bruke #{ … } sekvens. Følgende eksempel ber deg om navnet ditt og hilser deg ved å bruke interpolering for å sette inn navnet ditt i strengbokstavene som er skrevet ut.

Legg merke til at hvilken som helst kode kan gå i seler, ikke bare variabelnavn. Ruby vil evaluere den koden, og uansett hva som returneres vil den prøve å sette den inn i strengen. Så du kan like gjerne si det "Hei, # {får.chomp}" og glem det Navn variabel. Imidlertid er det god praksis å ikke legge lange uttrykk i bukseselen.

Enkelt sitater, apostrofer, eller harde sitater er mye mer restriktive. Inne i enkeltnoteringene vil Ruby ikke utføre noen interpolering eller rømningssekvenser annet enn å slippe unna det eneste sitatkarakteret og selv skvise-streken (\' og \\ henholdsvis). Hvis du ikke har tenkt å bruke interpolering, anbefales det at du bruker enkle sitater oftere enn ikke.

Følgende eksempel prøver å interpolere en variabel på innsiden av enkelt sitater.

Hvis du kjører dette, får du ingen feil, men hva skrives ut?

Interpolasjonssekvensen ble sendt gjennom ufortolket.

Når bør jeg bruke enkelt- og dobbeltnoteringer

Dette er et spørsmål om stil. Noen foretrekker å bruke doble sitater hele tiden med mindre de blir upraktiske. Andre vil heller bruke enkelt sitater med mindre interpolasjonsatferden er ment. Det er ingenting iboende farlig om å bruke doble sitater hele tiden, men det gjør at noen koder er lettere å lese. Du trenger ikke å lese en streng når du leser gjennom kode hvis du vet at det ikke er noen interpolasjoner i den fordi du vet at selve strengen ikke vil ha noen bivirkninger. Så hvilken streng bokstavelig form du bruker er opp til deg, det er ingen virkelig riktig og feil måte her.

Rømningssekvenser

Hva om du, i en streng bokstavelig, ønsker å inkludere et sitatkarakter? For eksempel strengen "Steve sa" Moo! " vil ikke fungere. Og heller ikke det "Kan ikke røre dette!". Begge disse strengene inkluderer sitatkarakteren inne i strengen, som effektivt avslutter strengen bokstavelig og forårsaker en syntaksfeil. Du kan bytte sitatkarakterer, som 'Steve sa "Moo!"', men det løser ikke problemet virkelig. I stedet kan du unnslippe ethvert sitatkarakter inne i strengen, og den vil miste sin spesielle betydning (i dette tilfellet er den spesielle betydningen å lukke strengen).

Hvis du vil unnslippe en karakter, må du henge den med motbakke-tegnet. Motbakke-tegnet forteller Ruby om å ignorere enhver spesiell betydning neste karakter kan ha. Hvis det er et matchende sitatkarakter, må du ikke avslutte strengen. Hvis det er et hasjetegn, ikke start en interpolasjonsblokk. Følgende eksempel viser denne bruken av motbakker for å unnslippe spesialtegn.

Bakskritt-tegnet kan brukes til å fjerne enhver spesiell betydning fra følgende tegn, men forvirrende kan det også brukes til å betegne spesiell oppførsel i dobbelt siterte strenger. De fleste av disse spesielle oppførselene har å gjøre med å sette inn tegn og bytesekvenser som ikke kan skrives inn eller representeres visuelt. Ikke alle strengene er karakterstrenger eller kan inneholde kontrollsekvenser beregnet for terminalen, og ikke brukeren. Ruby gir deg muligheten til å sette inn denne typen strenger ved å bruke rømningskarakteren for skvis.

  • \ n - Et nylinjetegn. De puts metoden gjør dette automatisk, men hvis du vil sette inn en midt i en streng, eller strengen er bestemt til noe annet enn puts metoden, kan du bruke denne til å sette inn en ny linje i en streng.
  • \ t - Et fanetegn. Tablettegnet flytter markøren over (på de fleste terminaler) til et multiplum på 8, så dette er veldig nyttig for å vise tabelldata. Imidlertid er det bedre måter å gjøre dette på, og bruk av kategorien karakter anses som litt arkaisk eller haishish.
  • \ nnn - Et tilbakeskritt etterfulgt av 3 tall vil betegne et ASCII-tegn representert med 3 oktalsifre. Hvorfor oktal? Mest av historiske grunner.
  • \ xnn - Et tilbakeskritt, en x og to sekskantesifre. Det samme som den oktale versjonen, bare med sekskantesifre.

Du vil sannsynligvis aldri bruke de fleste av disse, men vet at de eksisterer. Og husk også at de bare jobber i to-siterte strenger.

Neste side diskuterer flerstrengede strenger og en alternativ syntaks for strenglitterære.

Flerlinjestrenger

De fleste språk tillater ikke flere linjers strenge bokstaver, men Ruby gjør det. Det er ingen grunn til å avslutte strengene dine og legge til flere strenger for neste linje. Ruby håndterer flere linjers strenge bokstaver helt fint med standard syntaks.

Alternativ syntaks

Som med de fleste andre bokstaver, gir Ruby en alternativ syntaks for strenglitterære. Hvis du for eksempel bruker mange sitatkarakterer i bokstavene dine, kan det være lurt å bruke denne syntaks. Når du bruker denne syntaks er et spørsmål om stil, er de vanligvis ikke nødvendig for strenger.

Hvis du vil bruke den alternative syntaks, bruker du følgende sekvens for enkeltsidede strenger % q {...}. På samme måte kan du bruke følgende syntaks for to-siterte strenger % Q {...}. Denne alternative syntaks følger alle de samme reglene som deres "normale" søskenbarn. Legg også merke til at du kan bruke alle tegn du ønsker i stedet for seler. Hvis du bruker en stag, firkantet brakett, vinkelfeste eller parentes, vil det matchende tegnet avslutte bokstavelig. Hvis du ikke vil bruke samsvarende tegn, kan du bruke et hvilket som helst annet symbol (ikke noe bokstav eller tall). Bokstavene vil bli lukket med et annet av samme symbol. Følgende eksempel viser flere måter å bruke denne syntaks på.

Den alternative syntaks fungerer også som en flerstrengsstreng.

instagram story viewer