Ruby je interpretovaný, dynamický, reflektívny, objektovo orientovaný programovací jazyk. Vyvinutý Yukihirom Matsumotom, Ruby sa zameriava na jednoduchosť a produktivitu. Elegantná syntax umožňuje vývojárom jednoduchšie čítať a písať kód.
V tejto príručke budeme pracovať s reťazcami v Ruby.
Požiadavky
Na vykonanie krokov demonštrovaných v tomto návode potrebujete nasledujúce komponenty:
- Správne nakonfigurovaný systém Ubuntu. Prečítajte si viac o konfigurácii vlastného servera Ubuntu na CloudSigma.
- Akýkoľvek moderný textový editor, najlepšie so zvýrazňovaním syntaxe, napríklad VS Code, Sublime Text, Atom, Brackets, Vim, atď.
Dátový typ String
V programovaní je reťazec bežný dátový typ, ktorý podporuje každý moderný programovací jazyk. Je charakterizovaný postupnosťou znakov. Celá postupnosť znakov sa považuje za jediný údaj. Reťazec môže obsahovať písmená, číslice a špeciálne znaky/symboly.
Ruby, ako čisto objektovo orientovaný programovací jazyk, považuje reťazce za objekty. Na rozdiel od mnohých iných jazykov sú reťazce v Ruby meniteľné. V zásade je možné hodnotu reťazca zmeniť priamo na mieste.
Krok 1 – Vytváranie a tlačenie reťazcov
V Ruby sú reťazce obklopené buď jednoduchými úvodzovkami ( ') alebo dvojitými úvodzovkami ( "). Nasledujú dva platné reťazce v Ruby:
|
1 2 |
'the quick brown fox' "jumps over the lazy dog" |
Na vytlačenie akéhokoľvek výstupu na obrazovku konzoly prichádza Ruby s metódou print:
|
1 2 |
print 'the quick brown fox' print "jumps over the lazy dog" |
Je čas uviesť to do praxe. Vytvorte nový súbor Ruby practice.rb a zadajte nasledujúce kódy:
Spustite kód:
|
1 |
ruby practice.rb |
Podľa očakávania príkaz print vytlačí poskytnuté reťazce. Ak chceme reťazce vytlačiť na samostatné riadky, je lepšie použiť puts namiesto toho. Aktualizujte kód:
|
1 2 |
puts 'the quick brown fox' puts "jumps over the lazy dog" |
Ďalej znova spustite kód:
|
1 |
ruby practice.rb |
Krok 2 – Reťazcové premenné
Premenné sú názvy odkazujúce na konkrétne miesto v pamäti počítača, kde je uložená hodnota. Požadovanú hodnotu môžeme uložiť do premennej a použiť ju neskôr.
V Ruby na deklarovanie reťazcovej premennej definujte názov premennej a priraďte hodnotu reťazca:
|
1 |
<variable_name> = <string> |
Napíšte nasledujúci kód do practice.rb:
|
1 2 3 4 |
first_half = 'the quick brown fox' second_half = "jumps over the lazy dog" puts first_half puts second_half |
Spustite kód:
|
1 |
ruby practice.rb |
Tu:
- Definovali sme dve premenné first_half a second_half, pričom každej bola priradená hodnota reťazca.
- Metóda puts vytlačí hodnotu premenných.
Krok 3 – Spájanie reťazcov
Spájaním môžeme vziať viacero reťazcov a spojiť ich dohromady, čím vytvoríme nový reťazec. Spájanie reťazcov je označené operátorom spájania ( +). Upozorňujeme, že tento symbol je tiež operátorom sčítania pri práci s aritmetickými operáciami.
Skúsme vykonať spájanie reťazcov na reťazcoch, ktoré sme doteraz deklarovali:
|
1 |
puts "the quick brown fox" + "jumps over the lazy dog" |
Spustite kód:
|
1 |
ruby practice.rb |
Ako ukazuje výstup, spájanie nevkladá medzi reťazce žiadny ďalší znak. Preto sú fox a jumps spojené dokopy. Môžeme to napraviť vložením medzery za fox:
|
1 |
puts "the quick brown fox " + "jumps over the lazy dog" |
Spustite kód:
|
1 |
ruby practice.rb |
Teraz vyzerá výstup lepšie.
Spájanie reťazcov funguje aj s premennými. Pozrite sa na nasledujúci príklad:
|
1 2 |
first_half = "rýchla hnedá líška " puts first_half + "preskakuje lenivého psa" |
Spustite kód:
|
1 |
ruby practice.rb |
Nasledujúci príklad ukazuje dlhý reťazec spájania:
|
1 2 3 |
username = "cloudsigma" fav_color = "modrá" puts "ahoj, " + username + "! tvoja obľúbená farba je " + fav_color + "." |
Spustite kód:
|
1 |
ruby practice.rb |
Doteraz sme pracovali iba s reťazcovými premennými. Čo ak by existovali rôzne typy premenných? Nasledujúci program testuje tento scenár:
|
1 2 3 |
username = "cloudsigma" user_id = 20 puts username + user_id |
Pri pokuse o spustenie tohto programu Ruby vyhodí chybové hlásenie:
|
1 |
ruby practice.rb |
Tento problém však môžeme vyriešiť konverziou celého čísla na reťazec:
|
1 2 3 |
username = "cloudsigma" user_id = 20 puts username + user_id.to_s |
Tu:
-
Metóda to_s konvertuje hodnotu premennej na reťazec.
Konverzia čísel na reťazce je bežným javom pri práci s prvkami, ako sú PSČ, mena, telefónne čísla a iné číselné údaje.
Krok 4 – Interpolácia reťazcov
Hoci je spájanie reťazcov výkonná funkcia, môže sa veľmi ľahko skomplikovať. V mnohých situáciách pravdepodobne zistíte, že vám chýba operátor spájania ( +), čo vedie k veľkým nepríjemnostiam. Navyše pri práci s rôznymi dátovými typmi je potrebné ich najprv skonvertovať na reťazec. Našťastie Ruby ponúka iné spôsoby vkladania hodnôt premenných do reťazca pomocou funkcie interpolácia reťazcov.
Takto to vyzerá. Napríklad namiesto použitia:
|
1 |
"ahoj, " + username + "!" |
Budeme používať:
|
1 |
"ahoj, #{username}!" |
Aj keď syntax môže vyzerať trochu zvláštne, dramaticky zjednodušuje kód. Nie je potrebné manuálne volať metódu to_s na konverziu hodnoty premennej na reťazec.
Použime túto novú techniku na aktualizáciu nášho predchádzajúceho kódu:
|
1 2 3 |
username = "cloudsigma" user_id = 20 puts "ahoj, #{username}! tvoje používateľské ID je #{user_id}" |
Spustite kód:
|
1 |
ruby practice.rb |
Krok 5 – Reťazcové literály a reťazcové hodnoty
Všimnite si, že reťazce deklarované v kódoch sú vždy obklopené úvodzovkami. Pri výpise na obrazovku konzoly sa však žiadne úvodzovky nezobrazujú. Je medzi nimi jasný rozdiel.
- Reťazcový literál: Je to reťazec zapísaný v zdrojovom kóde (vrátane úvodzoviek).
- Reťazcová hodnota: Je to hodnota, ktorá sa vytlačí na výstupe (bez úvodzoviek).
Napríklad nasledujúci príklad je reťazcový literál:
|
1 |
"ahoj svet" |
Jeho reťazcová hodnota by bola ahoj svet.
Krok 6 – Escapovanie úvodzoviek a apostrofov
Ako sme ukázali, úvodzovky a apostrofy sa používajú na označenie reťazcov v zdrojovom kóde. To predstavuje problém: nemôžete ich mať priamo v reťazci. V opačnom prípade to spôsobí problémy. Nasledujúci kód to demonštruje:
|
1 |
puts 'it's what it is' |
Existujú rôzne taktiky, ako tento problém obísť.
-
Použitie alternatívnej syntaxe reťazcov
Toto je najjednoduchší spôsob, ako obísť tento problém. Ak váš reťazec vyžaduje jednoduché úvodzovky, použite v reťazcovom literáli dvojité úvodzovky (a naopak).
Opravme predchádzajúci príklad:
|
1 |
puts "it's what it is" |
Ďalším príkladom by mohlo byť:
|
1 |
puts 'povedal, "ahoj svet"' |
Nebude to však fungovať v každej situácii. Napríklad:
|
1 |
puts "Clousdigma says, "I'm a happy boi!"" |
-
Použitie escape znakov
Spätná lomka ( \) sa často označuje ako escape znak. Zabraňuje tomu, aby Ruby interpretoval nasledujúci znak doslovne. Opravme predchádzajúci príklad. Použite spätnú lomku, aby ste zabránili tomu, aby Ruby interpretoval vnútorné dvojité úvodzovky ako literály:
|
1 |
puts "Cloudsigma hovorí, \"Som šťastný chlapec!\"" |
-
Použitie alternatívnej syntaxe
Doteraz sme pracovali iba s jednoduchými a dvojitými úvodzovkami na označenie reťazcového literálu. Predchádzajúce príklady sú však jednoduchou ukážkou toho, ako sa to môže veľmi rýchlo vymknúť spod kontroly. Na vyriešenie tohto problému môžeme úvodzovky úplne vynechať a použiť úplne iný symbol na označenie začiatku a konca reťazca.
Pozrite sa na nasledujúci príklad:
|
1 |
%$tá rýchla hnedá líška povedala, "preskočil som lenivého psa"$ |
Tu:
-
- Symbol % definuje nasledujúci znak ( $, v tomto prípade) ako oddeľovač reťazca.
- Reťazcový literál je tu $tá rýchla hnedá líška povedala, "preskočil som lenivého psa"$.
Poďme to uviesť do praxe:
|
1 |
puts %$tá rýchla hnedá líška povedala, "preskočil som lenivého psa"$ |
Tu sa s reťazcom v podstate zaobchádza nasledovne:
|
1 |
"tá rýchla hnedá líška povedala, \"preskočil som lenivého psa\"" |
Znovu to však prináša problém s escapovaním oddeľovača, ak sa používa v reťazci. Jedným zo spôsobov, ako sa tomu vyhnúť, je použitie symbolov, ktoré sa v reťazcoch zvyčajne nevyskytujú. Takéto symboly môžu zahŕňať zložené zátvorky, hranaté zátvorky atď.:
|
1 |
puts %{"ahoj, svet!", on povedal} |
Funguje to tiež perfektne s interpoláciou reťazcov:
|
1 2 3 |
username = "cloudsigma" user_id = 5 puts %{ahoj, #{username}.#{user_id}!} |
V programoch v jazyku Ruby je tiež bežné používať %Q{} a %q{} na definovanie reťazcov. Tu %Q{} funguje ako dvojité úvodzovky a %q{} funguje ako jednoduché úvodzovky.
Krok 7 – Nové riadky a dlhé reťazce
Pri práci s reťazcami nastanú situácie, keď budete chcieť do reťazca vložiť nový riadok alebo návrat vozíka (carriage return). Môžeme to urobiť vložením escape znakov \n (nový riadok) a \r (návrat vozíka).
Pozrite sa na nasledujúci príklad:
|
1 2 |
hello_world = "rýchla hnedá\nlíška preskočí\ncez lenivého\npsa" puts hello_world |
Tento reťazcový literál vyzerá mätúco, však? Upravme ho pre lepšiu čitateľnosť:
|
1 2 3 4 5 6 7 |
hello_world = "rýchla hnedá\n" + "líška preskočí\n" + "cez lenivého\n" + "psa" puts hello_world |
Namiesto manuálneho deklarovania znakov nového riadka môžeme použiť aj nasledujúcu štruktúru:
|
1 2 3 4 5 6 |
hello_world = "rýchla hnedá líška preskočí cez lenivého psa" puts hello_world |
Pri tejto metóde si reťazec zachová všetky biele znaky. To však narúša výstup. Odstráňte prebytočné biele znaky, aby ste to opravili:
|
1 2 3 4 5 |
hello_world = "rýchla hnedá líška preskočí cez lenivého psa" |
Hoci sa problém s bielymi znakmi vyriešil, znižuje to čitateľnosť kódu. Tento problém môžeme vyriešiť implementáciou heredoc, čo je výraz pre viacriadkové reťazcové literály. Aktualizovaný kód by vyzeral takto:
|
1 2 3 4 5 6 7 8 |
hello_world = <<-END rýchla hnedá líška preskočí cez lenivého psalazy dog END puts hello_world |
Počnúc verziou Ruby v2.3 a novšou je k dispozícii ďalšia funkcia s názvom vlnovkový heredoc syntax. Odstraňuje počiatočné biele znaky v reťazcoch. Na vyjadrenie vlnovkového heredoc nahraďte spojovník ( -) vlnovkou ( ~):
|
1 2 3 4 5 6 7 8 |
hello_world = <<~END tá rýchla hnedá líška skáče cez toho lenivého psa END puts hello_world |
Krok 8 – Replikácia reťazcov
V niektorých situáciách môže byť potrebné zopakovať reťazec niekoľkokrát. Ruby umožňuje replikovať reťazce rôznymi spôsobmi.
Jednou z takýchto techník je použitie * operátora. Vo všeobecnosti sa používa ako operátor násobenia pri práci s číslami. Pri práci s reťazcami sa však stáva operátorom replikácie reťazca, ktorý opakuje jeden reťazec toľkokrát, koľkokrát je to potrebné. Počet opakovaní musí byť celé číslo.
V nasledujúcom príklade sa text Boris zopakuje 5-krát:
|
1 |
print "Boris" * 5 + "\n" |
Pomocou tejto funkcie môžeme vytvoriť zaujímavé ASCII umenie. Pozrite si nasledujúci príklad:
|
1 2 3 |
puts "=" * 15 puts "| hello world |" puts "=" * 15 |
Záver
Reťazce sú v programovaní kľúčové. Táto príručka demonštruje prácu s reťazcami v jazyku Ruby. Naučili sme sa, ako vytvárať reťazce a vykonávať rôzne operácie, ako je spájanie (konkatenácia), spracovanie nových riadkov, úvodzoviek atď. Pomocou interpolácie reťazcov sme sa tiež naučili, ako lepšie integrovať hodnoty premenných do reťazcov. Pomocou operátora replikácie reťazcov môžeme tiež viackrát zopakovať jeden reťazec.
Hoci samotný Ruby je vynikajúci programovací jazyk, často sa kombinuje s frameworkom Rails. Ruby on Rails je open-source framework pre webové aplikácie. Prečítajte si viac o inštalácii Ruby on Rails na Ubuntu. Ruby však môže spolupracovať aj s inými aplikáciami, ako sú MySQL a PostgreSQL.
Príjemné programovanie!












































Komentáre
Zatiaľ žiadne komentáre. Buďte prvý.