Zpět na blog

Přehled datových typů v Ruby

Přehled datových typů v Ruby

Ruby je známý programovací jazyk. Jeho cílem je zvýšit jednoduchost a produktivitu. Je to také plně objektově orientovaný programovací jazyk. Ruby navíc přichází s elegantní syntaxí, která se přirozeně čte a snadno píše.

Jakékoli programování vyžaduje správu různých datových typů. Datový typ popisuje konkrétní třídu dat. Říká stroji, jak má s daty v programu zacházet. Datové typy jsou klíčové pro určení toho, co lze s daty dělat (včetně operací, které lze provádět). V tomto návodu se ponoříme hlouběji do datových typů dostupných v Ruby. Prozkoumáme také dynamické typování. Pomocí této funkce může Ruby automaticky určit datový typ proměnné bez jejího explicitního deklarování. Začněme!

Požadavky

K procvičení a implementaci kroků popsaných v této příručce budete potřebovat následující komponenty:

Datové typy v Ruby

Ruby obsahuje všechny běžné datové typy, se kterými se setkáte v jakémkoli programovacím jazyce: celá čísla, desetinná čísla, řetězce, pole, symboly, hashe atd. Dále si ukážeme přehled toho, jak s různými datovými typy v Ruby pracovat.

Step 1 – Celá čísla

Podobně jako v matematice jsou celá čísla v počítačovém programování celá čísla bez desetinné části. Hodnota může být kladná, záporná nebo 0. Rozsah hodnot je následující:

Je čas vyzkoušet si celá čísla v Ruby. Prvním příkladem je vypsání jednoduchého celého čísla na obrazovku:

Data Types in Ruby 1

Dále budeme pracovat s celočíselnou proměnnou. Zde proměnná sample_int obsahuje celočíselnou hodnotu (99) a funkce print vypíše hodnotu proměnné na obrazovku:

Data Types in Ruby 2

S celými čísly můžeme také provádět matematické operace. Následující příklad ukazuje jednoduchý součet dvou celých čísel:

Když pracujeme s velkými čísly, často používáme čárky (,) pro snazší čtení. Například jeden milion (1000000) se pro lepší čitelnost zapisuje jako 1,000,000. Zatímco používání čárek je zakázáno, Ruby umožňuje používat podtržítka ( _) jako oddělovač. Podívejte se na následující příklad:

Data Types in Ruby 3

Použití podtržítek zlepšuje čitelnost kódu, zejména při práci s velkými celočíselnými hodnotami.

Step 2 – Čísla s plovoucí desetinnou čárkou

Číslo s plovoucí desetinnou čárkou (zkráceně float) představuje reálné číslo. Podobně jako v matematické definici mohou být reálná čísla racionální nebo iracionální. V Ruby je float v podstatě číslo obsahující desetinnou tečku.

Zkusme vypsat hodnotu float na obrazovku:

Následující příklad ukazuje deklaraci proměnné typu float:

S hodnotami a proměnnými typu float můžeme také provádět různé matematické operace. Následující příklad ukazuje jednoduchý součet dvou desetinných čísel:

Co když sečteme float a celé číslo? Výsledná hodnota bude float. V následujícím příkladu je číslo 55.0 i přes to, že je to celé číslo, považováno za float:

Step 3 – Boolean

Booleovské hodnoty představují pravdivostní hodnoty logické větve matematiky. V Ruby jsou booleovské datové typy reprezentovány dvěma hodnotami: true a false:

  • Větší než

    • 100 > 99: true

    • 99 > 100: false

  • Menší než

    • 500 < 999: true

    • 999 < 500: false

  • Rovná se

    • 10 == 10: true

    • 9 == 99: false

Podobně jako čísla můžeme také uložit true nebo false hodnotu v proměnné. Následující příklad tuto funkci demonstruje:

Step 4 – Řetězce

V programování je string reprezentován jako posloupnost znaků (písmena, čísla a symboly). V Ruby existují řetězce v jednoduchých uvozovkách ( ') nebo dvojitých uvozovkách ( "). Již jsme podrobně probrali použití řetězců v Ruby, takže toto bude krátká část.

Následující příklad je základní hello world program v Ruby:

Řetězce můžeme také ukládat do proměnných. Následující příklad také zahrnuje spojování řetězců:

Data Types in Ruby 4

Step 5 – Pole

Pole je datová struktura, která může ukládat kolekci prvků stejného datového typu o pevné velikosti. Lze jej také chápat jako kolekci proměnných stejného datového typu. Je to jedna z nejzákladnějších datových struktur ve většině moderních programovacích jazyků.

V Ruby je pole definováno následovně:

Je možné vytvořit pole jakýchkoli jiných datových typů, o kterých jsme dosud hovořili (celé číslo, desetinné číslo a řetězce). Zde je několik příkladů:

  • Celé číslo: [-5, 0, 5]

  • Desetinné číslo: [-9.99, -6.99, -3.99, 0, 3.99]

  • Řetězec: [“the”, “quick”, “brown”, “fox”]

Následující příklad implementuje všechny tyto typy polí:

Data Types in Ruby 5

Všimněte si, že když funkce print narazí na pole, vytiskne na obrazovku celé pole. Pro větší pohodlí se s poli často setkáte jako s proměnnými. Pojďme kód aktualizovat:

Data Types in Ruby 6

Data Types in Ruby 7

Nyní můžeme pracovat s jednotlivými prvky polí:

Data Types in Ruby 7

Všimněte si, že v Ruby začíná indexová hodnota polí od 0.

Pro pohodlí jsou pole v Ruby vybavena metodami .first a .last, které vytisknou první a poslední prvek:

Data Types in Ruby 8

V Ruby mají pole další zajímavou vlastnost. Mohou obsahovat různé typy dat současně. Můžete do nich například ukládat řetězce, symboly a dokonce i další pole:

Data Types in Ruby 9

Step 6 – Symboly

V Ruby je symbol speciální datový typ, který funguje jako štítek nebo identifikátor. Symboly jsou neměnné (immutable), což znamená, že je nelze změnit. Symboly vypadají, jako by deklarovaly proměnné bez jakékoli hodnoty.

Zde je příklad symbolu:

Obecně se symboly používají k identifikaci něčeho důležitého. Pro jiné situace jsou však řetězce více než dostačující.

Ruby jako objektově orientovaný jazyk považuje vše za objekt (včetně řetězců) s vlastním jedinečným umístěním v paměti, i když jsou řetězce identické. Pokud však odkazujete na symbol, jedná se o stejný objekt kdekoli v programu, tedy o stejné místo v paměti.

Step 7 – Hashe

Hash je kolekce klíčů a hodnot podobná slovníku. Hashe se často používají k ukládání souvisejících dat, například informací o uživateli.

Zde je rychlý příklad hashe. Vytvořili jsme hash user_info obsahující uživatelské jméno a heslo uživatele:

Data Types in Ruby hashing in ruby

Chceme-li získat hodnoty páru klíč-hodnota, musíme použít klíč. Následující příklad tento proces demonstruje:

Data Types in Ruby retrieve value using key

Ruby také umožňuje definovat hash pomocí mírně odlišné syntaxe ( : namísto =>):

Data Types in Ruby retrieving value using key

Tato syntaktická struktura je podobná syntaxi používané v jiných jazycích, například v JavaScript. V této syntaktické struktuře jsou klíče definovány jako symboly. Proto namísto použití "username" používáme: username pro přístup k hodnotě.

Dynamické typování

Možná jste si již všimli, že při deklaraci proměnné nemusíme explicitně určovat datový typ. Datový typ místo toho určuje hodnota proměnné. Ruby používá dynamické typování, kde se kontrola typů provádí za běhu programu. Naproti tomu v programovacích jazycích se statickým typováním (například C/C++) určují datové typy během kompilace.

V následujícím příkladu jsou všechny hodnoty přiřazené proměnné dyn_var platné:

V dynamicky typovaných jazycích můžeme volně znovu použít existující proměnnou k ukládání různých datových typů. Zde je předchozí příklad upraven tak, aby tento jev demonstroval:

dynamically typed variables

Jak tento příklad ukazuje, pokaždé, když je přiřazena nová hodnota, změní se datový typ proměnné dyn_var za běhu. To je užitečné při převodu jednoho datového typu na jiný. Následující příklad to demonstruje:

get input and cast

Zde,

  • Protože vstupy z klávesnice jsou řetězce, je length nejprve řetězcem.

  • Protože naše požadovaná hodnota je typu float (desetinné číslo), převádíme řetězcovou hodnotu na float pomocí to_f metody.

  • Kvůli změně hodnoty je proměnné length přiřazen datový typ float. To je to, co vidíme při výpisu její hodnoty na obrazovku.

Co by se stalo, kdybychom se pokusili smíchat dva různé datové typy dohromady? Ruby vyhodí chybu. Podívejte se:

mixing two datatypes

Identifikace datového typu

V Ruby se se vším zachází jako s objektem. Každý objekt v Ruby má metodu class. Při volání tato metoda říká, jakého datového typu je zdroj. Zde je několik příkladů použití metody class:

get classes name

Dalším způsobem, jak zjistit datový typ, je použití metody kind_of?. Ta porovná datový typ objektu s požadovaným datovým typem a vrátí booleanovskou hodnotu. Podívejte se na to v následujícím příkladu:

check datatype

Podobně existuje další metoda is_a?, která porovnává datový typ a vrací booleanovskou hodnotu. Jediným rozdílem je název metody. Může však být preferovanější, protože je pro vývojáře o něco snazší ji číst a pochopit. Aktualizujte předchozí příklad pomocí is_a?:

check datatype

Závěrečné myšlenky

Práce s jakýmkoli programovacím jazykem vyžaduje dobré porozumění datovým typům, které podporuje. V tomto návodu jsme prozkoumali nejběžnější datové typy používané při programování v Ruby. Probrali jsme a názorně si ukázali celá čísla, desetinná čísla, řetězce, symboly, booleovské hodnoty a hashe (včetně příkladů).

Podívejte se na další návody z našeho blogu, které vám pomohou prozkoumat Ruby:

Příjemné programování!

author

Preslav Dobrev

Autor · CloudSigma

Preslav Dobrev je kreativní designér ve společnosti CloudSigma, který se zaměřuje na konzistentní firemní identitu prostřednictvím tradičních i inovativních marketingových kanálů. Je zdatný v propojování umělecké vize se strategickým marketingem za účelem vytváření působivých příběhů značky.

Komentáře

Zatím žádné komentáře. Buďte první.