abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 19:55 | IT novinky

    Americký výrobce čipů Intel propustí 15 procent zaměstnanců (en), do konce roku by jich v podniku mělo pracovat zhruba 75.000. Firma se potýká s výrobními problémy a opouští také miliardový plán na výstavbu továrny v Německu a Polsku.

    Ladislav Hagara | Komentářů: 7
    včera 17:33 | Komunita

    MDN (Wikipedie), dnes MDN Web Docs, původně Mozilla Developer Network, slaví 20 let. V říjnu 2004 byl ukončen provoz serveru Netscape DevEdge, který byl hlavním zdrojem dokumentace k webovým prohlížečům Netscape a k webovým technologiím obecně. Mozille se po jednáních s AOL povedlo dokumenty z Netscape DevEdge zachránit a 23. července 2005 byl spuštěn MDC (Mozilla Developer Center). Ten byl v roce 2010 přejmenován na MDN.

    Ladislav Hagara | Komentářů: 0
    včera 14:55 | Nová verze

    Wayback byl vydán ve verzi 0.1. Wayback je "tak akorát Waylandu, aby fungoval Xwayland". Jedná se o kompatibilní vrstvu umožňující běh plnohodnotných X11 desktopových prostředí s využitím komponent z Waylandu. Cílem je nakonec nahradit klasický server X.Org, a tím snížit zátěž údržby aplikací X11.

    Ladislav Hagara | Komentářů: 0
    včera 13:33 | Nová verze

    Byla vydána nová verze 6.18 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Nově se lze k síti Tor připojit pomocí mostu WebTunnel. Tor Browser byl povýšen na verzi 14.5.5. Thunderbird na verzi 128.12.0. Další změny v příslušném seznamu.

    Ladislav Hagara | Komentářů: 0
    24.7. 14:33 | IT novinky

    Meta představila prototyp náramku, který snímá elektrickou aktivity svalů (povrchová elektromyografie, EMG) a umožňuje jemnými gesty ruky a prstů ovládat počítač nebo různá zařízení. Získané datové sady emg2qwerty a emg2pose jsou open source.

    Ladislav Hagara | Komentářů: 0
    24.7. 14:22 | Nová verze

    Byla vydána (𝕏) nová verze 25.7 open source firewallové a routovací platformy OPNsense (Wikipedie). Jedná se o fork pfSense postavený na FreeBSD. Kódový název OPNsense 25.7 je Visionary Viper. Přehled novinek v příspěvku na fóru.

    Ladislav Hagara | Komentářů: 0
    24.7. 13:33 | IT novinky

    Před 40 lety, 23. července 1985, společnost Commodore představila první počítač Amiga. Jednalo se o počítač "Amiga od Commodore", jenž byl později pojmenován Amiga 1000. Mělo se jednat o přímou konkurenci počítače Apple Macintosh uvedeného na trh v lednu 1984.

    Ladislav Hagara | Komentářů: 2
    24.7. 06:00 | IT novinky

    T‑Mobile USA ve spolupráci se Starlinkem spustil službu T-Satellite. Uživatelé služby mohou v odlehlých oblastech bez mobilního signálu aktuálně využívat satelitní síť s více než 650 satelity pro posílání a příjem zpráv, sdílení polohy, posílání zpráv na 911 a příjem upozornění, posílání obrázků a krátkých hlasových zpráv pomocí aplikace Zprávy Google. V plánu jsou také satelitní data.

    Ladislav Hagara | Komentářů: 9
    23.7. 21:55 | Komunita

    Společnost Proxmox Server Solutions stojící za virtualizační platformou Proxmox Virtual Environment věnovala 10 000 eur nadaci The Perl and Raku Foundation (TPRF).

    Ladislav Hagara | Komentářů: 2
    23.7. 21:22 | Bezpečnostní upozornění

    Byla vydána nová verze 2.4.65 svobodného multiplatformního webového serveru Apache (httpd). Řešena je bezpečnostní chyba CVE-2025-54090.

    Ladislav Hagara | Komentářů: 0
    Kolik tabů máte standardně otevřeno ve web prohlížeči?
     (29%)
     (25%)
     (5%)
     (5%)
     (5%)
     (2%)
     (2%)
     (27%)
    Celkem 131 hlasů
     Komentářů: 16, poslední včera 15:31
    Rozcestník

    Ruby pro začátečníky - 3 (datové typy)

    1. 3. 2006 | Jaromír Hradílek | Programování | 10428×

    V minulém díle našeho seriálu jsme si ukázali práci s proměnnými, dnes se podíváme blíže na jednotlivé datové typy.

    Obsah

    1. Dynamické datové typy
    2. Fixnum a Bignum
    3. Float
    4. String
    5. Array
    6. Hash

    1. Dynamické datové typy

    Už jsem se několikrát zmínil, že je Ruby dynamicky typovaný jazyk. Nyní si vysvětlíme, co to znamená.

    Jak jsme viděli, proměnná může uchovávat nejrůznější druhy hodnot - celá a reálná čísla, řetězce, ba dokonce pole a hashe. Chceme-li kteroukoli z těchto hodnot uložit do proměnné, musí dojít k vyhrazení určitého místa v paměti počítače. V nízkoúrovňových jazycích, jako je C, proto před použitím nějaké proměnné musíme explicitně uvést, jakého bude typu (co do ní hodláme uložit). Tomuto se říká statické typování.

    Naproti tomu v dynamicky typovaných jazycích proměnná nabývá typu až podle přiřazené hodnoty a tento typ se navíc může v průběhu jejího života libovolně měnit.

    Základními datovými typy v Ruby jsou Fixnum, Bignum, Float, String, Array a Hash. Pojďme si je tedy postupně probrat.

    2. Fixnum a Bignum

    Fixnum a Bignum označují celá čísla a jsou v podstatě ekvivalenty typů integer a long integer, známých z jiných jazyků. Jaký je mezi nimi rozdíl?

    Fixnum je určen pro menší čísla a zabírá i méně místa v paměti. Chceme-li uchovávat čísla větší, přijde na řadu Bignum, který může nabývat teoreticky nekonečných hodnot (omezením je pochopitelně velikost dostupné paměti počítače). Jak se s nimi pracuje? Jednoduše. Interpretr sám pozná, který typ má použít:

    irb(main):001:0> a = 10
    => 10
    irb(main):002:0> a.class
    => Fixnum
    irb(main):003:0> a = 10_000_000_000
    => 10000000000
    irb(main):004:0> a.class
    => Bignum
    irb(main):005:0>

    Jelikož čitelnost větších čísel je obtížná, umožňuje Ruby oddělovat řády pomocí znaku _ (podtržítko). Podtržítka jsou interpretrem ignorována (vidíme, že návratová hodnota je 10000000000), programátoři je však jistě ocení.

    Druhou zajímavou věcí je metoda class. O metodách si toho řekneme více, až přejdeme k objektově orientovanému přístupu; zatím nás zajímá jen výsledek, a tím je právě typ proměnné.

    3. Float

    S typem Float jsme se už taky setkali a označuje reálná čísla (čísla s plovoucí desetinnou čárkou, angl. floating point). Stejně jako ve většině programovacích jazyků je místo u nás běžné čárky používána k oddělení desetinných míst tečka:

    irb(main):005:0> a = 3.14159
    => 3.14159
    irb(main):006:0> a.class
    => Float
    irb(main):007:0>

    Marně bychom v Ruby hledali typ double, Float bez obtíží pojme i obrovská čísla.

    4. String

    String, neboli řetězec, je už poněkud komplikovanější a běžně se vytváří uzavřením skupiny znaků mezi apostrofy ('), nebo do uvozovek ("):

    irb(main):007:0> pozdrav = 'Ahoj!'
    => "Ahoj!"
    irb(main):008:0> den = "Streda"
    => "Streda"
    irb(main):009:0>

    Na první pohled se zdá, že je zcela jedno, jestli použijeme apostrofů, nebo uvozovek. To však není pravda. Asi první, co vás napadne, je použít apostrofy tam, kde v našem řetězci chceme mít uvozovky, a naopak:

    irb(main):009:0> pozdrav = '"No nazdar," usklibl se.'
    => "\"No nazdar,\" usklibl se."
    irb(main):010:0> titul = "Blackened's Ruby tutorial"
    => "Blackened's Ruby tutorial"
    irb(main):011:0>

    Je zde ale ještě jeden podstatnější rozdíl: v řetězci uzavřeném v uvozovkách se berou v potaz speciální znaky, uvozené znakem \ (zpětné lomítko) a vyhodnocují se výrazy uzavřené v #{}. V řetězci uzavřeném v apostrofech se těmto znakům nepřipisuje žádný zvláštní význam a je s nimi zacházeno jako s jakýmikoliv jinými. Více nám ukáží následující příklady:

    irb(main):011:0> puts "Ahoj\nsvete!"
    Ahoj
    svete!
    => nil
    irb(main):012:0> puts 'Ahoj\nsvete!'
    Ahoj\nsvete!
    => nil
    irb(main):013:0>

    Příkazem puts se budeme detailněji zabývat v některém z dalších dílů, prozatím nám stačí vědět, že slouží k vypsání hodnot na obrazovku.

    Z příkladu je jasně vidět odlišné chování - speciální sekvence \n zastupuje zalomení řádku a podle toho byla v prvním případě vyhodnocena. V případě druhém se s ní zacházelo jako s běžným řetězcem.

    Možná vás napadlo, jak docílit třeba vypsání znaku zpětného lomítka v řetězci s uvozovkami. Použije-li se zpětné lomítko zdvojeně, je vypsáno jako standardní znak:

    irb(main):013:0> puts "Toto je zpetne lomitko: \\"
    Toto je zpetne lomitko: \
    => nil
    irb(main):014:0>

    Zpětné lomítko totiž stejně jako dovede znakům speciální význam dávat, umí ho i brát:

    puts "\"No nazdar,\" pravil a zatvaril se kysele."
    "No nazdar," pravil a zatvaril se kysele.
    => nil
    irb(main):015:0>

    Když se podíváte o pár příkladů zpátky na návratovou hodnotu přiřazení do proměnné pozdrav, zjistíte, že Ruby dělá vlastně při použití apostrofů totéž.

    Druhou zajímavou vlastností je vyhodnocování výrazů uzavřených v #{}:

    irb(main):015:0> puts "5 x 5 = #{5*5}"
    5 x 5 = 25
    => nil
    irb(main):016:0>

    Lze pochopitelně použít i proměnných:

    irb(main):016:0> jazyk = "Ruby"
    => "Ruby"
    irb(main):017:0> puts "#{jazyk} je muj nejoblibenejsi jazyk!"
    Ruby je muj nejoblibenejsi jazyk!
    => nil
    irb(main):018:0>

    Kdybychom se o totéž pokusili s apostrofy, moc bychom neuspěli:

    irb(main):018:0> puts '#{jazyk} je muj nejoblibenejsi jazyk!'
    #{jazyk} je muj nejoblibenejsi jazyk!
    => nil
    irb(main):019:0>

    Avšak jeden zápis přeci jen vyhodnocuje jinak, a to když chceme vypsat právě apostrof:

    irb(main):019:0> puts 'Blackened\'s Ruby Tutorial'
    Blackened's Ruby Tutorial
    => nil
    irb(main):020:0>

    Řetězce se také dají velmi snadno spojovat:

    irb(main):020:0> 'Ahoj ' + 'svete!'
    => "Ahoj svete!"
    irb(main):021:0>

    ... a to i v případě proměnných typu String:

    irb(main):021:0> jmeno = 'Bilbo'
    => "Bilbo"
    irb(main):022:0> prijmeni = 'Pytlik'
    => "Pytlik"
    irb(main):023:0> celeJmeno = jmeno + ' ' + prijmeni
    => "Bilbo Pytlik"
    irb(main):024:0>

    Co je však ještě zajímavější, řetězce se dají i násobit:

    irb(main):024:0> 'la'*3
    => "lalala"
    irb(main):025:0>

    Krom toho se dají s řetězci vyvádět psí kusy:

    # vypise delku retezce
    irb(main):025:0> 'Ahoj, svete!'.length 
    => 12
    
    # prevede vsechna pismena na velka
    irb(main):026:0> 'Ahoj, svete!'.upcase
    => "AHOJ, SVETE!"
    
    # prevede vsechna pismena na mala
    irb(main):027:0> 'Ahoj, svete!'.downcase
    => "ahoj, svete!"
    
    # zameni velka pismena za mala a naopak
    irb(main):028:0> 'Ahoj, svete!'.swapcase
    => "aHOJ, SVETE!"
    
    # vypise retezec pozpatku
    irb(main):029:0> 'Ahoj, svete!'.reverse  
    => "!etevs ,johA"
    irb(main):030:0>

    O metodách si budeme povídat důkladněji, až přejdeme k objektově orientovanému přístupu a třídám. Vidíte však už teď, že se s nimi dá užít pořádné legrace :-).

    Použijeme-li jednu z výše uvedených metod na nějaký řetězec, jeho původní hodnota se nezmění:

    irb(main):030:0> pozdrav = 'Ahoj, svete!'
    => "Ahoj, svete!"
    irb(main):031:0> pozdrav.upcase
    => "AHOJ, SVETE!"
    irb(main):032:0> pozdrav
    => "Ahoj, svete!"
    irb(main):033:0>

    Dost často by se nám ale hodilo naši změnu do proměnné uložit. Běžným způsobem se to dá provést následovně:

    irb(main):033:0> pozdrav = pozdrav.upcase
    => "AHOJ, SVETE!"
    irb(main):034:0> pozdrav
    => "AHOJ, SVETE!"
    irb(main):035:0>

    Ruby však nabízí elegantnější řešení, a tím je použití metody s vykřičníkem na konci:

    irb(main):017:0> pozdrav.downcase!
    => "ahoj, svete!"
    irb(main):018:0> pozdrav
    => "ahoj, svete!"
    irb(main):019:0>

    Hezké, ne? Pochopitelně ne všechny metody mají definovaný ekvivalent s vykřičníkem, například v souvislosti s metodou length v tom ani mnoho užitku nevidím.

    5. Array

    Typ Array bývá česky překládán jako pole a v některých jazycích je označován taky jako list (seznam). Pole je zvláštní datový typ, který může oproti výše uvedeným nabývat více hodnot:

    irb(main):019:0> cisla = [1, 2, 3]
    => [1, 2, 3]
    irb(main):020:0>

    Takto jsme vytvořili proměnnou cisla typu Array, obsahující tři prvky typu Fixnum. Důležitou vlastností polí v Ruby je, že mohou obsahovat i prvky různých typů:

    irb(main):020:0> pelmel = [3, "Ahoj", -12.4]
    => [3, "Ahoj", -12.4]
    irb(main):021:0>

    Pole může dokonce obsahovat další pole:

    irb(main):021:0> pelmel = [3, "Ahoj", -12.4, cisla]
    => [3, "Ahoj", -12.4, [1, 2, 3]]
    irb(main):022:0>

    Stejně jako tomu bylo u typu String, lze mezi sebou pole sčítat, nebo je násobit:

    irb(main):022:0> pelmel + cisla
    => [3, "Ahoj", -12.4, [1, 2, 3], 1, 2, 3]
    irb(main):023:0> cisla * 3
    => [1, 2, 3, 1, 2, 3, 1, 2, 3]
    irb(main):024:0>

    Takto můžeme vytvářet seznamy nejrůznějších prvků. Ale jak s nimi pak pracovat a k jednotlivým prvkům přistupovat? Pole je vlastně seznam prvků, indexovaných od nuly - obsah naší proměnné cisla tedy vypadá nějak takto:

             +---+---+---+
    hodnota: | 1 | 2 | 3 |
             +---+---+---+
    index:     0   1   2

    Chceme-li vypsat 2. prvek pole cisla (tedy prvek s indexem 1), uděláme to takto:

    irb(main):024:0> cisla[1]
    => 2
    irb(main):025:0>

    Pole lze indexovat i odzadu:

             +---+---+---+
    hodnota: | 1 | 2 | 3 |
             +---+---+---+
    index:     0   1   2
    index:    -3  -2  -1
    irb(main):025:0> cisla[-1]
    => 3
    irb(main):026:0> cisla[-3]
    => 1
    irb(main):027:0>

    Pokusíme-li se zobrazit neexistující prvek pole, bude nám vrácena prázdná hodnota nil:

    irb(main):027:0> cisla[10]
    => nil
    irb(main):028:0>

    Kromě zobrazování jednotlivých prvků má Ruby i další možnosti:

    irb(main):028:0> cisla = [1, 2, 3, 4, 5, 6]
    => [1, 2, 3, 4, 5, 6]
    irb(main):029:0> cisla[0,3]  # vypise 3 prvky, pocinaje indexem 0
    => [1, 2, 3]
    irb(main):030:0> cisla[0..3]  # vypise prvky s indexem 0 az 3 vcetne
    => [1, 2, 3, 4]
    irb(main):031:0> cisla[0...3]  # vypise prvky s indexem 0 az 2
    => [1, 2, 3]
    irb(main):032:0> cisla[-3,2]  # vypise 2 prvky, pocinaje indexem -3
    => [4, 5]
    irb(main):033:0>

    Prvky lze podle indexů i přidávat, nebo nahrazovat:

    irb(main):033:0> jmena = ['Jaromir', 'Lukas', 'Radek']
    => ["Jaromir", "Lukas", "Radek"]
    irb(main):034:0> jmena[3] = 'Jiri'
    => "Jiri"
    irb(main):035:0> jmena
    => ["Jaromir", "Lukas", "Radek", "Jiri"]
    irb(main):036:0>

    V případě, že přidáme prvek na index větší než je dosavadní rozsah, jsou "chybějící" prvky nahrazeny prázdnou hodnotou nil:

    irb(main):036:0> jmena[7] = 'Martin'
    => "Martin"
    irb(main):037:0> jmena
    => ["Jaromir", "Lukas", "Radek", "Jiri", nil, nil, nil, "Martin"]
    irb(main):038:0>

    Stejně jako String, má i Array spoustu užitečných metod:

    # vrati pocet prvku pole
    irb(main):038:0> jmena.length
    => 8
    
    # vrati pole s obracenym poradim prvku
    irb(main):039:0> jmena.reverse
    => ["Martin", nil, nil, nil, "Jiri", "Radek", "Lukas", "Jaromir"]
    
    # zkrati pole o prazdne hodnoty
    irb(main):040:0> jmena.compact
    => ["Jaromir", "Lukas", "Radek", "Jiri", "Martin"]
    irb(main):041:0>

    Další zajímavou možností je převod pole na řetězec a naopak:

    irb(main):041:0> retezec = jmena.join(';')
    => "Jaromir;Lukas;Radek;Jiri;;;;Martin"
    irb(main):042:0> retezec.split(';')
    => ["Jaromir", "Lukas", "Radek", "Jiri", "", "", "", "Martin"]
    irb(main):043:0>

    V závorce obou metod uvádíme řetězec, který má být použit/rozpoznán jako oddělovač prvků. Převod z řetězce na pole však není 100% - bez ohledu na prapůvodní typ jsou všechny prvky převedeny na řetězec.

    K vymazání prvku z pole slouží metoda delete:

    irb(main):043:0> jmena.delete("Jaromir")
    => "Jaromir"
    irb(main):044:0> jmena
    => ["Lukas", "Radek", "Jiri", nil, nil, nil, "Martin"]
    irb(main):045:0>

    Pomocí správných metod lze pole využít jako frontu s filozofií fifo (first in, first out - první dovnitř, první ven):

    # vytvorime prazdnou frontu
    irb(main):045:0> buffer = []
    => []
    
    # pridame prvek na konec fronty
    irb(main):046:0> buffer.push("Jaromir")
    => ["Jaromir"]
    
    # pridame prvek na konec fronty
    irb(main):047:0> buffer.push("Lukas")
    => ["Jaromir", "Lukas"]
    
    # pridame prvek na konec fronty
    irb(main):048:0> buffer.push("Radek")
    => ["Jaromir", "Lukas", "Radek"]
    
    # odebereme prvek na zacatku fronty a vratime jeho hodnotu
    irb(main):049:0> buffer.shift
    => "Jaromir"
    
    # na prvni misto se dostal nasledujici prvek
    irb(main):050:0> buffer
    => ["Lukas", "Radek"]
    irb(main):051:0>

    Další užitečné metody lze nalézt v referenci jazyka Ruby, v části o třídě Array.

    6. Hash

    Hash nebo taky asociativní pole slouží také k ukládání více hodnot. Namísto číselných indexů však používá k označení prvků takzvaných klíčů. Hash je uzavřen ve složených závorkách:

    irb(main):051:0> udaje = {"jmeno" => "Jaromir", "prijmeni" => "Hradilek"}
    => {"jmeno"=>"Jaromir", "prijmeni"=>"Hradilek"}
    irb(main):052:0>

    Hodnoty se zadávají vždy ve dvojici klíč => hodnota a navzájem jsou oddělené čárkou. K jednotlivým hodnotám se pak přistupuje pomocí klíče:

    irb(main):053:0> udaje["jmeno"]
    => "Jaromir"
    irb(main):054:0> udaje["prijmeni"]
    => "Hradilek"
    irb(main):055:0>

    Nový údaj lze do hashe snadno přidat:

    irb(main):055:0> udaje["pohlavi"] = "muz"
    => "muz"
    irb(main):056:0> udaje
    => {"jmeno"=>"Jaromir", "prijmeni"=>"Hradilek", "pohlavi"=>"muz"}
    irb(main):057:0>

    I typ Hash má definovanou spoustu metod:

    irb(main):057:0> udaje.length  # vrati pocet prvku
    => 3
    irb(main):058:0> udaje.keys  # vrati pole vsech klicu
    => ["jmeno", "prijmeni", "pohlavi"]
    irb(main):059:0> udaje.values  # vrati pole vsech hodnot
    => ["Jaromir", "Hradilek", "muz"]
    irb(main):060:0> udaje.index("Jaromir")  # vrati klic k dane hodnote
    => "jmeno"
    irb(main):061:0> udaje.invert  # zameni klice s hodnotami
    => {"Hradilek"=>"prijmeni", "Jaromir"=>"jmeno", "muz"=>"pohlavi"}
    irb(main):062:0>

    Dost často by se nám hodilo zjistit, zdali náš hash obsahuje určitý klíč:

    irb(main):062:0> udaje.has_key?("prijmeni")
    => true
    irb(main):063:0>

    Návratovou hodnotou metody je buď true (pravda) v případě, že daný klíč existuje, nebo false (nepravda) v případě, že ne. Podobně lze zjišťovat i přítomnost hodnot:

    irb(main):063:0> udaje.has_value?("Pavel")
    => false
    irb(main):064:0>

    Z hashe lze prvky i odebírat:

    irb(main):064:0> udaje.delete("pohlavi")
    => "muz"
    irb(main):065:0> udaje
    => {"jmeno"=>"Jaromir", "prijmeni"=>"Hradilek"}
    irb(main):066:0>

    Jako parametr je metodě delete předán klíč mazané položky, návratovou hodnotou je její hodnota. Chceme-li smazat všechny prvky, můžeme použít metodu clear:

    irb(main):066:0> udaje.clear
    => {}
    irb(main):067:0> udaje
    => {}
    irb(main):068:0>

    Úplný přehled metod najdete v referenci jazyka Ruby.

           

    Hodnocení: 100 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    1.3.2006 19:09 Pmx
    Rozbalit Rozbalit vše Re: Ruby pro začátečníky - 3 (datové typy)
    udaje.has_key?("prijmeni")
    Ten otazník je součástí názvu funkce? Není to trochu zvláštní, mít interpunkční znaménka v názvech funkcí?
    1.3.2006 20:06 blackened
    Rozbalit Rozbalit vše Re: Ruby pro začátečníky - 3 (datové typy)
    Zvláštní to je, ale skutečně tam patří.
    1.3.2006 20:45 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Ruby pro začátečníky - 3 (datové typy)
    Proč zvláštní? V Ruby je to běžná mnemotechnika pro metody vracející pravdivostní hodnotu. Stejně tak vykřičník je symbolem destruktivních operací, tím spíše, pokud k nim existuje nedetruktivní (kopírující) ekvivalent.

    Půlka jazyků, co znám, tyhle věci dovoluje. V Ruby je to nutnost, neboť prakticky vše jsou běžné metody, včetně operací +, ++, %...you name it. Jak byste je chtěl definovat, když by tyhle znaky nebyly povolené v identifikátorech? ;-)
    2.3.2006 10:16 podlesh | skóre: 38 | Freiburg im Breisgau
    Rozbalit Rozbalit vše Re: Ruby pro začátečníky - 3 (datové typy)
    Je to nezvyklé, ale o to nápadnější. Jinak je to velice dobrý zvyk, převzatý z LISPu. Například v Pythonu je vidět, že tam vyloženě chybí.
    9.3.2006 10:06 mig
    Rozbalit Rozbalit vše Re: Ruby pro začátečníky - 3 (datové typy)
    Tak mě napadá, že si neodpustím malou reklamu :-)

    Hash z principu neuchovává pořadí položek (jako php Array),
    h = Hash.new
    h['z'] = 1
    h['a'] = 2
    h['x'] = 3
    p h  # { 'a'=>2, 'x'=>3, 'z'=>1 }
    
    Jak vidíte, prvky jsou seřazené podle abecedy, nikoli v pořadí, jak byly do hashe přidány.

    Pokud byste chtěli simulovat chování php pole, zkuste OrderedHash.
    9.2.2008 11:50 ucimsetaky
    Rozbalit Rozbalit vše Re: Ruby pro začátečníky - 3 (datové typy)
    Ano, naco mit pole serazene tak jak bylo slozeno, kdyz pak se s nim peracuje objektove :)

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.