String Literals

Strängobjekt har ordnade sekvenser av byte, vanligtvis tecken, vanligtvis för att bilda bitar av mänsklig läsbar text. De är en mycket vanlig objekttyp på alla programmeringsspråk, och Ruby har ett antal sätt på hög nivå och några lågnivåer att skapa, komma åt och manipulera String-objekt.

Strängar skapas oftast med en String letteral. En bokstavlig är en speciell syntax på Ruby-språket som skapar ett objekt av en specifik typ. Till exempel, 23 är en bokstavlig som skapar en Fixnum objekt. Vad gäller strängbokstäver finns det flera former.

Enkelcitater och dubbelciterade strängar

De flesta språk har en strängbokstav som liknar detta, så det kan vara bekant. Typen av citat, '(enstaka offert, apostrof eller hårt citat) och "(dubbelcitationstecken eller mjuk offert) används för att omsluta strängbokstäver, allt mellan dem förvandlas till strängobjekt. Följande exempel visar detta.

Men det finns vissa skillnader mellan enstaka och dubbla citat. Dubbla citat eller mjuka citat möjliggöra viss magi att hända bakom kulisserna. Mest användbart är interpolering inuti strängar, användbart för att införa värdet på en variabel i mitten av en sträng. Detta uppnås genom att använda # … sekvens. Följande exempel ber dig om ditt namn och hälsar dig, med interpolering för att infoga ditt namn i strängbokstäver som är tryckt.

Observera att valfri kod kan gå in i hängslen, inte bara variabla namn. Ruby kommer att utvärdera den koden och vad som än returneras kommer det att försöka infoga den i strängen. Så du kan lika lätt säga "Hej, # gets.chomp" och glöm det namn variabel. Det är dock god praxis att inte sätta långa uttryck i hängslen.

Enstaka citat, apostrofer eller hårda citat är mycket mer restriktiva. Inuti de enskilda citaten kommer Ruby inte att utföra någon interpolering eller flygsekvenser annat än att undkomma enstaka citatkaraktär och själva backslitsen (\' och \\ respektive). Om du inte tänker använda interpolering rekommenderas att du använder enstaka offert oftare än inte.

Följande exempel försöker interpolera en variabel inuti enstaka citat.

Om du kör detta får du inget fel, men vad kommer att skrivas ut?

Interpolationssekvensen passerade genom otolkad.

När ska jag använda enstaka och dubbla citat

Det handlar om stil. Vissa föredrar att använda dubbla citat hela tiden om de inte blir obekväma. Andra skulle hellre använda enstaka citat om inte interpoleringsbeteendet är avsett. Det finns inget i sig farlig om att använda dubbla citat hela tiden, men det gör viss kod lättare att läsa. Du behöver inte läsa en sträng när du läser igenom koden om du vet att det inte finns några interpolationer i den eftersom du vet att själva strängen inte kommer att ha några biverkningar. Så vilken bokstavlig strängform du använder är upp till dig, det finns inget riktigt rätt och fel sätt här.

Escape Sekvenser

Tänk om du, i en strängbokstav, vill inkludera en citattecken? Till exempel strängen "Steve sa" Moo! " fungerar inte. Och varken kommer "Kan inte röra det här!". Båda dessa strängar inkluderar citatkaraktären inuti strängen, vilket effektivt slutar strängen bokstavligen och orsakar ett syntaxfel. Du kan byta citattecken, som 'Steve sa "Moo!"', men det löser inte problemet. Istället kan du undkomma alla citatkaraktär i strängen, och den kommer att förlora sin speciella betydelse (i detta fall är den speciella betydelsen att stänga strängen).

För att undkomma en karaktär, beroende på den med backslash-karaktären. Backslash-karaktären säger Ruby att ignorera alla speciella betydelser som nästa tecken kan ha. Om det är ett matchande citattecken ska du inte avsluta strängen. Om det är ett hashtecken bör du inte starta ett interpoleringsblock. Följande exempel visar denna användning av backslash för att undkomma specialtecken.

Backslash-tecknet kan användas för att ta bort någon speciell betydelse från följande tecken, men förvirrande kan det också användas för att beteckna speciellt beteende i dubbelciterade strängar. De flesta av dessa speciella beteenden har att göra med att infoga tecken och bytesekvenser som inte kan skrivas eller representeras visuellt. Inte alla strängar är teckensträngar eller kan innehålla kontrollsekvenser avsedda för terminalen och inte användaren. Ruby ger dig möjligheten att sätta in dessa typer av strängar med hjälp av backslash-flyktecken.

  • \ n - En ny linje-karaktär. De sätter metoden gör detta automatiskt, men om du vill infoga en i mitten av en sträng, eller strängen är avsett för något annat än sätter kan du använda den här för att infoga en ny linje i en sträng.
  • \ t - Ett flikkaraktär. Fliktecknet flyttar markören över (på de flesta terminaler) till en multipel av 8, så det är mycket användbart för att visa tabelldata. Det finns emellertid bättre sätt att göra detta, och att använda flikens karaktär anses vara lite arkaiskt eller hackish.
  • \ nnn - Ett motstreck följt av 3 siffror anger ett ASCII-tecken representerat av 3 oktala siffror. Varför oktal? Mest av historiska skäl.
  • \ xnn - Ett snedstreck, ett x och två hexsiffror. Samma som den oktala versionen, endast med sexkantiga siffror.

Du kommer antagligen aldrig använda de flesta av dessa, men vet att de finns. Och kom ihåg att de bara arbetar i dubbelciterade strängar.