Ruby je známy programovací jazyk. Jeho cieľom je zvýšiť jednoduchosť a produktivitu. Je to tiež plne objektovo orientovaný programovací jazyk. Okrem toho Ruby prichádza s elegantnou syntaxou, ktorá sa prirodzene číta a ľahko píše.
Akékoľvek programovanie vyžaduje správu rôznych dátových typov. Dátový typ popisuje konkrétnu triedu dát. Hovorí stroju, ako má s dátami v programe zaobchádzať. Dátové typy sú kľúčové pre určenie toho, čo sa dá s dátami robiť (vrátane operácií, ktoré je možné vykonať). V tomto návode sa ponoríme hlbšie do dátových typov dostupných v Ruby. Preskúmame tiež dynamické typovanie. Pomocou tejto funkcie dokáže Ruby automaticky určiť dátový typ premennej bez jej explicitnej deklarácie. Začnime!
Požiadavky
Na precvičenie a implementáciu krokov predvedených v tejto príručke budete potrebovať nasledujúce komponenty:
- Správne nakonfigurovaný systém Linux. Prečítajte si viac o nastavení osobného servera Ubuntu na CloudSigma.
- Správne nakonfigurované vývojové prostredie Ruby. Pozrite si oficiálnu dokumentáciu k inštalácii Ruby na Ubuntu (pomocou APT).
Dátové typy v Ruby
Ruby obsahuje všetky bežné dátové typy, s ktorými sa stretnete v akomkoľvek programovacom jazyku: celé čísla, desatinné čísla, reťazce, polia, symboly, hashe atď. Ďalej si povieme o tom, ako pracovať s rôznymi dátovými typmi v Ruby.
Krok 1 – Celé čísla
Podobne ako v matematike, celé čísla sú v počítačovom programovaní celé čísla. Hodnota môže byť kladná, záporná alebo 0. Rozsah hodnôt je nasledovný:
|
1 |
{-∞, …, -1, 0, 1, …, ∞} |
Je čas vyskúšať si celé čísla v Ruby. Prvým príkladom je vypísanie jednoduchého celého čísla na obrazovku:
|
1 2 |
print 99 print "\n" |
Ďalej budeme pracovať s celočíselnou premennou. Tu premenná sample_int obsahuje celočíselnú hodnotu (99) a funkcia print vypíše hodnotu premennej na obrazovku:
|
1 2 3 |
sample_int = 99 print sample_int print "\n" |
S celými číslami môžeme robiť aj matematické operácie. Nasledujúci príklad ukazuje jednoduchý súčet dvoch celých čísel:
|
1 2 3 |
sample_int = 99 + 100 print sample_int print "\n" |
Keď pracujeme s veľkými číslami, často používame čiarky (,), aby sa dali ľahšie čítať. Napríklad jeden milión (1000000) sa pre lepšiu čitateľnosť píše ako 1,000,000. Hoci používanie čiarok je zakázané, Ruby umožňuje používať podčiarkovníky ( _) ako oddeľovač. Pozrite sa na nasledujúci príklad:
|
1 2 3 |
sample_int = 1_000_999 print sample_int print "\n" |
Používanie podčiarkovníkov zlepšuje čitateľnosť kódu, najmä pri práci s veľkými celočíselnými hodnotami.
Krok 2 – Desatinné čísla
A Desatinné číslo (skrátene float) predstavuje reálne číslo. Podobne ako v matematickej definícii, reálne čísla môžu byť racionálne alebo iracionálne. V Ruby je float v podstate číslo obsahujúce desatinnú čiarku.
Skúsme vypísať hodnotu float na obrazovku:
|
1 2 |
print 55.66 print "\n" |
Nasledujúci príklad ukazuje deklaráciu premennej typu float:
|
1 2 3 |
sample_float = 55.66 print sample_float print "\n" |
Na hodnotách a premenných typu float môžeme vykonávať aj rôzne matematické operácie. Nasledujúci príklad ukazuje jednoduchý súčet dvoch desatinných čísel:
|
1 2 3 |
sample_float = 55.66 + 99.222 print sample_float print "\n" |
Čo ak by sme sčítali float a celé číslo? Výsledná hodnota bude float. V nasledujúcom príklade, napriek tomu, že 55.0 je celé číslo, sa s ním zaobchádza ako s float:
|
1 2 3 |
sample_float = 55.0 + 10 print sample_float print "\n" |
Krok 3 – Boolean
Booleovské hodnoty predstavujú pravdivostné hodnoty logickej vetvy matematiky. V Ruby sú booleovské dátové typy reprezentované dvoma hodnotami: true a false:
-
Väčší ako
-
100 > 99: true
-
99 > 100: false
-
-
Menší ako
-
500 < 999: true
-
999 < 500: false
-
-
Rovná sa
-
10 == 10: true
-
9 == 99: false
-
Podobne ako čísla, môžeme tiež uložiť true alebo false hodnotu v premennej. Nasledujúci príklad demonštruje túto vlastnosť:
|
1 2 3 |
result = 9 == 99 print result print "\n" |
Step 4 – Reťazce
V programovaní sa reťazec reprezentuje ako sekvencia znakov (písmená, čísla a symboly). V jazyku Ruby existujú reťazce v jednoduchých úvodzovkách ( ') alebo dvojitých úvodzovkách ( "). Už sme podrobne prebrali používanie reťazcov v Ruby, takže toto bude krátka časť.
Nasledujúci príklad je základný hello world program v Ruby:
|
1 |
print "hello world!\n" |
Reťazce môžeme ukladať aj do premenných. Nasledujúci príklad zahŕňa aj spájanie reťazcov:
|
1 2 |
username = "Cloudsigma" print "hello, " + username + "!\n" |
Step 5 – Polia
Pole je dátová štruktúra, ktorá dokáže uchovávať kolekciu prvkov rovnakého dátového typu s pevnou veľkosťou. Môže sa tiež chápať ako kolekcia premenných rovnakého dátového typu. Je to jedna z najzákladnejších dátových štruktúr vo väčšine moderných programovacích jazykov.
V Ruby je pole definované nasledovne:
|
1 |
[value_1, value_2, …, value_N] |
Je možné vytvoriť pole akýchkoľvek iných dátových typov, o ktorých sme doteraz hovorili (celé čísla, desatinné čísla a reťazce). Tu je niekoľko príkladov:
-
Celé číslo: [-5, 0, 5]
-
Desatinné číslo: [-9.99, -6.99, -3.99, 0, 3.99]
-
Reťazec: [“the”, “quick”, “brown”, “fox”]
Nasledujúci príklad implementuje všetky tieto typy polí:
|
1 2 3 4 5 6 |
print [-5, 0, 5] print "\n" print [-9.99, -6.99, -3.99, 0, 3.99] print "\n" print ["the", "quick", "brown", "fox"] print "\n" |
Všimnite si, že keď funkcia print narazí na pole, vytlačí celé pole na obrazovku. Pre väčšie pohodlie sa s poliami často stretnete ako s premennými. Aktualizujme kód:
|
1 2 3 4 5 6 7 8 9 10 |
array_int = [-5, 0, 5] print array_int print "\n" array_float = [-9.99, -6.99, -3.99, 0, 3.99] print array_float print "\n" array_string = ["the", "quick", "brown", "fox"] print array_string print "\n" |
Teraz môžeme pracovať s jednotlivými prvkami polí:
|
1 2 3 4 5 6 7 8 9 |
array_int = [-5, 0, 5] print array_int[2] print "\n" array_float = [-9.99, -6.99, -3.99, 0, 3.99] print array_float[1] print "\n" array_string = ["the", "quick", "brown", "fox"] print array_string[3] print "\n" |
Všimnite si, že v Ruby začína indexová hodnota polí od 0.
Pre pohodlie prichádzajú polia v Ruby s metódami .first a .last, ktoré vytlačia prvý a posledný prvok:
|
1 2 3 4 |
array_float = [-9.99, -6.99, -3.99, 0, 3.99] puts array_float.first puts array_float.last print "\n" |
V Ruby majú polia ďalšiu zaujímavú vlastnosť. Môžu súčasne obsahovať rôzne typy údajov. Môžete napríklad ukladať reťazce, symboly a dokonca aj iné polia:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
mixed_array = [ "hello", 99.99, "world", [ "the", "quick", "brown", "fox" ] ] print mixed_array print "\n" print mixed_array[3] print "\n" |
Step 6 – Symbols
V jazyku Ruby je symbol špeciálny dátový typ, ktorý funguje ako štítok alebo identifikátor. Symboly sú nemenné, čo znamená, že sa nedajú zmeniť. Symboly vyzerajú, akoby deklarovali premenné bez akejkoľvek hodnoty.
Tu je príklad symbolu:
|
1 |
:time_zone |
Vo všeobecnosti sa symboly používajú na identifikáciu niečoho dôležitého. V iných situáciách sú však reťazce viac než dostatočné.
Ruby, ako objektovo orientovaný jazyk, považuje všetko za objekt (vrátane reťazcov) s vlastným jedinečným miestom v pamäti, a to aj v prípade, že sú reťazce identické. Keď však odkazujete na symbol, ide o ten istý objekt všade v programe, na rovnakom mieste v pamäti.
Step 7 – Hashes
Hash je kolekcia kľúčov a hodnôt podobná slovníku. Hashe sa často používajú na ukladanie súvisiacich údajov, napríklad informácií o používateľovi.
Tu je rýchly príklad hashu. Vytvorili sme hash user_info obsahujúci používateľské meno a heslo používateľa:
|
1 2 3 4 5 6 |
user_info = { "username" => "HelloWorld999", "password" => "password123" } print user_info print "\n" |
Na získanie hodnôt z dvojice kľúč-hodnota musíme použiť kľúč. Nasledujúci príklad tento proces demonštruje:
|
1 2 3 4 5 6 7 |
user_info = { "username" => "HelloWorld999", "password" => "password123" } print user_info["username"] print "\n" |
Ruby tiež umožňuje definovať hash pomocou mierne odlišnej syntaxe ( : namiesto =>):
|
1 2 3 4 5 6 |
user_info = { username: "HelloWorld999", password: "password123" } print user_info[:password] print "\n" |
Táto syntaktická štruktúra je podobná syntaxi používanej v iných jazykoch, napríklad JavaScript. V tejto syntaktickej štruktúre sú kľúče definované ako symboly. Preto namiesto použitia "username", používame: username na prístup k hodnote.
Dynamic Typing
Možno ste si už všimli, že pri deklarovaní premennej nemusíme explicitne priraďovať dátový typ. Namiesto toho dátový typ určuje hodnota premennej. Ruby používa dynamic typing, kde sa kontrola typov vykonáva počas behu programu (runtime). Naopak, v programovacích jazykoch so static typing sa dátové typy určujú počas kompilácie (napríklad v C/C++).
V nasledujúcom príklade sú všetky hodnoty priradené premennej dyn_var platné:
|
1 2 3 4 5 |
dyn_var = 123 dyn_var = 456.789 dyn_var = true dyn_var = "the quick brown fox" dyn_var |
V dynamicky typovaných jazykoch môžeme voľne znova použiť existujúcu premennú na ukladanie rôznych dátových typov. Tu je predchádzajúci príklad aktualizovaný, aby demonštroval tento jav:
|
1 2 3 4 5 6 7 |
dyn_var = 123 puts dyn_var dyn_var = 456.789 dyn_var = true dyn_var = "the quick brown fox" puts dyn_var dyn_var |
Ako tento príklad ukazuje, zakaždým, keď je priradená nová hodnota, mení sa dátový typ premennej dyn_var za behu. Je to užitočné pri konverzii jedného dátového typu na iný. Nasledujúci príklad to demonštruje:
|
1 2 3 4 |
print "enter length: " length = gets.chop length = length.to_f puts length |
Tu,
-
Keďže vstupy z klávesnice sú reťazce, length je najprv reťazec.
-
Keďže naša požadovaná hodnota je desatinné číslo (float), konvertujeme hodnotu reťazca na float pomocou to_f metódy.
-
Kvôli zmene hodnoty sa premennej length priradí dátový typ float. To je to, čo vidíme pri výpise jej hodnoty na obrazovku.
Čo by sa stalo, keby sme sa pokúsili zmiešať dva rôzne dátové typy dohromady? Ruby vyhodí chybu. Pozrite sa:
|
1 |
print 9 + "77" |
Identifikácia dátového typu
V jazyku Ruby sa so všetkým zaobchádza ako s objektom. Každý objekt v Ruby prichádza s metódou class. Pri volaní táto metóda hovorí, akého dátového typu je zdroj. Tu je niekoľko príkladov použitia class metódy:
|
1 2 3 4 |
puts 55.class puts (55.55).class puts true.class puts nil.class |
Ďalším spôsobom, ako zistiť dátový typ, je použitie kind_of? metódy. Porovnáva dátový typ objektu s požadovaným dátovým typom a vracia boolovskú hodnotu. Pozrite si to v nasledujúcom príklade:
|
1 2 |
puts 55.kind_of?(Float) puts 55.kind_of?(Integer) |
Podobne existuje ďalšia metóda is_a?, ktorá porovnáva dátový typ a vracia boolovskú hodnotu. Jediným rozdielom je názov metódy. Môže však byť preferovanejšia, pretože pre vývojárov je o niečo jednoduchšie ju čítať a pochopiť. Aktualizujte predchádzajúci príklad pomocou is_a?:
|
1 2 |
puts 55.is_a?(Float) puts 55.is_a?(Integer) |
Záverečné myšlienky
Práca s akýmkoľvek programovacím jazykom si vyžaduje dobré porozumenie dátovým typom, ktoré podporuje. V tejto príručke sme preskúmali najbežnejšie dátové typy používané pri programovaní v Ruby. Prebrali sme a demonštrovali celé čísla, desatinné čísla, reťazce, symboly, boolovské hodnoty a hashe (s príkladmi).
Pozrite si ďalšie návody z nášho blogu, ktoré vám pomôžu preskúmať Ruby:
- Inštalácia Ruby on Rails pomocou RVM na Ubuntu 20.04
- Nastavenie Ruby on Rails s PostgreSQL
- Použitie MySQL s aplikáciou Ruby on Rails na Ubuntu 21.04
- Skúmame CloudSigma PaaS: Ako využiť hostingové služby Ruby PaaS?
Príjemné programovanie!




































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