Porozumění „String Literals“ v Ruby

click fraud protection

Objekty řetězce drží uspořádané sekvence bajtů, obvykle znaků, obvykle k vytvoření kusů textu čitelného člověkem. Jsou to velmi běžný typ objektu ve všech programovacích jazycích a Rubín má řadu způsobů vysoké úrovně a několika nízkoúrovňových způsobů vytváření, přístupu a manipulace s objekty String.

Řetězce jsou nejčastěji vytvářeny pomocí String doslovný. A doslovný je speciální syntaxe v jazyce Ruby, která vytváří objekt určitého typu. Například, 23 je literál, který vytváříFixnum objekt. Pokud jde o literály String, existuje několik forem.

Jednotlivé uvozovky a dvojité uvozovky

Většina jazyků má řetězcový literál podobný tomuto, takže to může být známé. Druhy nabídek, „(jednoduchá nabídka, apostrof nebo tvrdá nabídka) a "(dvojitá nabídka nebo měkká nabídka) se používají k uzavření řetězcových literálů, vše mezi nimi se změní na řetězce. Následující příklad to ukazuje.

Existují však určité rozdíly mezi jednoduchými a dvojitými uvozovkami. Dvojité uvozovky nebo měkké citace dovolit nějaké kouzlo se stát za scénami. Nejužitečnější je interpolace uvnitř řetězců, která je užitečná pro vložení hodnoty proměnné do středu řetězce. Toho je dosaženo použitím

instagram viewer
#{ … } sekvence. Následující příklad vás požádá o vaše jméno a pozdraví vás pomocí interpolace k vložení vašeho jména do vytištěného řetězcového literálu.

Všimněte si, že jakýkoli kód může jít do složených závorek, nejen názvy proměnných. Ruby vyhodnotí tento kód a cokoli se vrátí, pokusí se jej vložit do řetězce. Takže můžete říci stejně snadno "Dobrý den, # {gets.chomp}" a zapomeň na název proměnná. Je však dobrým zvykem nevkládat do složených závorek dlouhé výrazy.

Jednotlivé uvozovky, apostrofy nebo tvrdé citace jsou mnohem přísnější. Uvnitř jednoduchých nabídek nebude Ruby provádět žádnou interpolaci nebo únikové sekvence jiné než unikání znaku jedné citace a samotného zpětného lomítka (\' a \\ ). Pokud nemáte v úmyslu použít interpolaci, doporučujeme používat jednoduché uvozovky častěji než ne.

Následující příklad se pokusí interpolovat proměnnou uvnitř jednoduchých nabídek.

Pokud toto spustíte, nebudete mít žádnou chybu, ale co bude vytištěno?

Interpolační sekvence prošla neinterpretovaným.

Kdy mám použít jednoduché a dvojité uvozovky

To je otázka stylu. Někteří raději používají dvojité uvozovky po celou dobu, pokud se stanou nepříjemnými. Jiní by raději používali jednoduché uvozovky, pokud není zamýšleno interpolační chování. Ve své podstatě není nic nebezpečný o používání dvojitých uvozovek po celou dobu, ale usnadňuje čtení některých kódů. Při čtení kódu nemusíte číst řetězec, pokud víte, že v něm nejsou žádné interpolace, protože víte, že samotný řetězec nebude mít žádné vedlejší účinky. Takže ta řetězcová doslovná forma, kterou používáte, je na vás, není zde žádná skutečná správná a špatná cesta.

Únikové sekvence

Co když v řetězcovém literálu chcete zahrnout znak nabídky? Například řetězec "Steve řekl:" Moo! " nebude fungovat. A ani nebude "To se nemůžu dotknout!". Oba tyto řetězce obsahují znak uvozovky uvnitř řetězce, což účinně končí literál řetězce a způsobuje chybu syntaxe. Mohli byste přepínat citáty, například "Steve řekl:" Moo! ", ale to problém opravdu neřeší. Místo toho můžete uniknout libovolnému znaku uvozovky uvnitř řetězce a ztratí svůj zvláštní význam (v tomto případě je zvláštním významem řetězec uzavřít).

Chcete-li uniknout znaku, připojte jej znakem zpětného lomítka. Znak zpětného lomítka říká Rubymu, aby ignoroval jakýkoli zvláštní význam, který může mít další znak. Pokud je to znak odpovídající citace, neukončujte řetězec. Pokud se jedná o znaménko hash, nezačínejte interpolační blok. Následující příklad demonstruje použití zpětného lomítka k úniku speciálních znaků.

Znak zpětného lomítka lze použít k odstranění jakéhokoli zvláštního významu z následujícího znaku, ale matoucí může být také použit k označení zvláštního chování v řetězcích s dvojitou citací. Většina těchto zvláštních chování má co do činění s vkládáním znaků a bajtových sekvencí, které nelze vizuálně psát ani reprezentovat. Ne všechny řetězce jsou řetězce znaků nebo mohou obsahovat kontrolní sekvence určené pro terminál, nikoli pro uživatele. Ruby vám dává možnost vložit tyto typy řetězců pomocí znaku úniku zpětného lomítka.

  • \ n - Znak nového řádku. staví metoda to provede automaticky, ale pokud si přejete vložit jeden uprostřed řetězce, nebo je řetězec určen pro něco jiného než staví metoda, můžete použít k vložení nového řádku do řetězce.
  • \ t - Znak karty. Znak tabulátoru přesune kurzor nad (na většině terminálů) na násobek 8, což je velmi užitečné pro zobrazení tabulkových dat. Existují však lepší způsoby, jak toho dosáhnout, a použití znaku karty je považováno za trochu archaické nebo hackerské.
  • \ nnn - zpětné lomítko následované 3 číslicemi označuje ASCII znak představovaný 3 osmičkovými číslicemi. Proč osmičkové? Většinou z historických důvodů.
  • \ xnn - zpětné lomítko, x a 2 hexadecimální číslice. Stejné jako u osmičkové verze, pouze s hexadecimálními číslicemi.

Většinu z nich pravděpodobně nikdy nepoužijete, ale víte, že existují. A také si pamatujte, že fungují pouze ve dvojitých uvozovkách.

Následující stránka popisuje víceřádkové řetězce a alternativní syntaxi řetězcových literálů.

Víceřádkové řetězce

Většina jazyků neumožňuje víceřádkové řetězcové literály, ale Ruby ano. Není třeba ukončovat vaše řetězce a přidávat další řetězce pro další řádek. Ruby zpracovává víceřádkové literály s řádky v pořádku s výchozím nastavením syntax.

Alternativní syntaxe

Jak s většinou jiných literálů, Ruby poskytuje alternativní syntaxi pro řetězcové literály. Pokud například v literálech používáte velké množství uvozovek, můžete použít tuto syntaxi. Když použijete tuto syntaxi, je to záležitost stylu, obvykle pro řetězce není potřeba.

Chcete-li použít alternativní syntaxi, použijte následující sekvenci pro jednocitované řetězce % q {…}. Podobně použijte následující syntaxi pro dvojité řetězce % Q {…}. Tato alternativní syntaxe se řídí všemi stejnými pravidly jako jejich „normální“ bratranci. Nezapomeňte také, že místo složených závorek můžete použít libovolné znaky. Pokud použijete rovnátka, hranatá závorka, úhlová závorka nebo závorka, odpovídající znak ukončí literál. Pokud nechcete používat odpovídající znaky, můžete použít jakýkoli jiný symbol (nic, ne písmeno nebo číslo). Doslovná část bude uzavřena dalším stejným symbolem. Následující příklad ukazuje několik způsobů použití této syntaxe.

Alternativní syntaxe funguje také jako víceřádkový řetězec.

instagram story viewer