Předchozí Obsah Další
Poznání proměnných Ruby Číselné třídy a převody v Ruby

Zakupte a stáhněte si plné PDF a ePub vydání této elektronické knihy o Ruby za pouhých 8 dolarů.99

Teď, když jsme probrali základy proměnných v jazyce Ruby, je dalším úkolem vysvětlit obor proměnných jazyka Ruby.

Obsah

Co je rozsah proměnné?“

Obsah definuje, kde v programu je proměnná přístupná. Ruby má čtyři typy oborů proměnných: lokální, globální, instanční a třídní. Kromě toho má Ruby jeden typ konstanty. Každý typ proměnné se deklaruje pomocí speciálního znaku na začátku názvu proměnné, jak je uvedeno v následující tabulce.

.

Název začíná Obsah proměnné
$ Globální proměnná
@ Proměnná instance
nebo _ Lokální proměnná
Konstanta
@@ Třídní proměnná

Kromě toho, Ruby má dvě pseudoproměnné, kterým nelze přiřadit hodnoty. Jsou to nil, která se přiřazuje neinicializovaným proměnným, a self, která odkazuje na právě prováděný objekt. Ve zbývající části této kapitoly se postupně podíváme na každý z těchto rozsahů proměnných.

Ezoicreport this ad

Zjištění rozsahu proměnné Ruby

Obsah proměnné lze samozřejmě zjistit pohledem na její název. Někdy však potřebujete rozsah zjistit programově. Užitečnou technikou, jak zjistit rozsah proměnné, je použití metody defined?. defined? vrátí rozsah odkazované proměnné nebo nil, pokud proměnná není v aktuálním kontextu definována:

x = 10=> 10defined? x=> "local-variable"$x = 10=> 10defined? $x=> "global-variable"

Lokální proměnné Ruby

Lokální proměnné jsou lokální pro konstrukci kódu, ve které jsou deklarovány. Například k lokální proměnné deklarované v metodě nebo uvnitř cyklu nelze přistupovat mimo tento cyklus nebo metodu. Názvy lokálních proměnných musí začínat buď podtržítkem, nebo malým písmenem. Například:

loopcounter = 10_LoopCounter = 20

Globální proměnné v jazyce Ruby

Globální proměnné v jazyce Ruby jsou přístupné odkudkoli z programu Ruby bez ohledu na to, kde jsou deklarovány. Názvy globálních proměnných jsou uvozeny znakem dolaru ($). Například:

$welcome = "Welcome to Ruby Essentials"

Používání globálních proměnných se důrazně nedoporučuje. Problém s globálními proměnnými spočívá v tom, že jsou nejen viditelné kdekoli v kódu programu, ale lze je také měnit odkudkoli z aplikace. To může ztížit sledování chyb.

Je však užitečné vědět, že jako vývojáři Ruby máte k dispozici řadu předdefinovaných globálních proměnných, pomocí kterých můžete získat informace o prostředí Ruby. Stručný přehled jednotlivých těchto proměnných je obsažen v následující tabulce.

.

Název proměnné Hodnota proměnné
Umístění poslední chyby
$_ Řetězec naposledy načtený gets
$. Číslo řádku naposledy načtené interpretem
$& Řetězec naposledy porovnávaný regexpem
$~ Poslední shoda regexpu, jako pole podvýrazů
$n N-tý podvýraz v poslední shodě (stejně jako $~)
$= Případ-necitlivosti
$/ Oddělovač vstupního záznamu
$\ Výstupní záznam oddělovač
Název souboru právě prováděného ruby skriptu
$* Název souboru právě prováděného ruby skriptu
Název souboru právě prováděného ruby skriptu argumenty příkazového řádku použité k vyvolání skriptu
$$ ID procesu interpretu Ruby
$? Stav ukončení posledního spuštěného podřízeného procesu

Například můžeme spustit metodu gets pro příjem vstupu z klávesnice, a poté odkazem na proměnnou $_ získat zadanou hodnotu:

irb(main):005:0> getshello=> "hello\n"irb(main):006:0> $_=> "hello\n"

Alternativně bychom mohli zjistit ID procesu interpretu Ruby:

irb(main):007:0> $$=> 17403

Proměnné třídy Ruby

Proměnná třídy je proměnná, která je společná pro všechny instance třídy. To znamená, že pro všechny objekty instancované z této třídy existuje pouze jedna hodnota proměnné. To znamená, že pokud jedna instance objektu změní hodnotu proměnné, tato nová hodnota se v podstatě změní pro všechny ostatní instance objektů.

Jiný způsob, jak uvažovat o proměnných třídy, je jako o globálních proměnných v rámci jedné třídy.

Proměnné třídy se deklarují tak, že se název proměnné předřadí dvěma znaky @ (@@). Proměnné třídy musí být při vytváření inicializovány. Například:

@@total = 0

Proměnné instancí jazyka Ruby

Proměnné instancí jsou podobné proměnným třídy s tím rozdílem, že jejich hodnoty jsou lokální pro konkrétní instance objektu. Například pokud třída obsahuje instanční proměnnou s názvem @total, pokud jedna instance objektu změní aktuální hodnotu @total, změna je lokální pouze pro objekt, který změnu provedl. Ostatní objekty téže třídy mají své vlastní lokální kopie proměnné, které jsou nezávislé na změnách provedených v jiných objektech.

Proměnné instancí se v jazyce Ruby deklarují předřazením názvu proměnné jednomu znaku @:

@total = 10

Obsah konstanty Ruby

Konstanty Ruby jsou hodnoty, které by se po přiřazení hodnoty neměly měnit. Říkám měl by, protože Ruby se od většiny programovacích jazyků liší tím, že umožňuje měnit hodnotu konstanty i po její deklaraci, ačkoli interpret mírně protestuje varovným hlášením.

Konstanty deklarované v rámci třídy nebo modulu jsou dostupné kdekoli v kontextu této třídy nebo modulu. Konstantám deklarovaným mimo třídu nebo modul je přiřazen globální rozsah.

Zakupte a stáhněte si plné vydání této elektronické knihy o Ruby ve formátu PDF a ePub za pouhých 8 USD.99

Předchozí Obsah Následující
Poznání proměnných jazyka Ruby Třídy čísel a převody v jazyce Ruby

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.