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 21:29 | Nová verze

    Open source download manager Fatrat povstal z popela. Autor k dvacetiletému výročí projektu přidal do vínku podporu nejnovější knihovny libtorrent, rozhraní portoval na QT6, došlo k nahrazení podpory java rozšíření pythonem. Webové rozhraní bylo přepsáno s podporou mobilních zařízení. Aplikaci je taktéž možno zkompilovat bez podpory GUI. Více informací v releases.

    Max | Komentářů: 9
    včera 21:11 | Bezpečnostní upozornění

    Zranitelnost Broccoli2Shell (CVE-2026-111497) v kompresní knihovně Brotli se netýká pouze Node.js. Ohroženy jsou také aplikace využívající HTTP. Knihovnu používají webové prohlížeče, servery i řada dalších aplikací a technologií, například také Python nebo Bun. Identifikace všech zranitelných komponent může být obtížná, protože knihovna bývá součástí dalších softwarových balíčků nebo je přímo začleněna do spustitelných souborů aplikací.

    Ladislav Hagara | Komentářů: 4
    včera 18:33 | Komunita

    Quad9, švýcarský celosvětově působící neziskový poskytovatel DNS, od 24. listopadu 2026 ukončí své služby ve Francii kvůli soudnímu sporu s katarskou televizní stanicí beIN. Ta požadovala blokování domén, které podle ní nelegálně zpřístupňují sportovní přenosy. Francouzský soud Katarům vyhověl a nařídil (🇫🇷, PDF) Quad9 blokaci zavést, pod hrozbou pokuty 1000 eur denně. Provozovatel příkaz odmítá s tím, že blokace

    … více »
    Pendrekama do nich❗ | Komentářů: 1
    včera 15:22 | Zajímavý článek

    Článek na blogu APNIC vysvětluje, jak správně vytvářet a používat ASPA záznamy — podepsané objekty v RPKI, které uvádějí, kteří poskytovatelé směrování jsou pro dané autonomní číslo (ASN) oprávněni. Síťoví operátoři je mohou využít k ověřování tras BGP a k odhalování úniků tras či podvržených tras.

    vencour | Komentářů: 1
    včera 14:33 | Nová verze

    Byla vydána (𝕏) verze 8.0.0 open source programu pro prolamování hesel hashcat (GitHub, Wikipedie). Přehled novinek v příspěvku v diskusním fóru a pdf.

    Ladislav Hagara | Komentářů: 1
    včera 14:22 | Nová verze

    Byla vydána (𝕏, Bluesky) nová verze 2026.3 linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux (Wikipedie). Přehled novinek se seznamem 6 nových nástrojů v oficiálním oznámení na blogu.

    Ladislav Hagara | Komentářů: 0
    včera 08:35 | Komunita
    Pořadatelé dalšího ročníku komunitního setkání správců nejen českých a slovenských sítí CSNOG 2027 upozorňují, Call for Abstracts pro blížící se akci (20. a 21. ledna 2027, Zlín) končí už 31. října, tedy na konci tohoto týdne.. … více »
    VSladek | Komentářů: 1
    24.10. 23:22 | Bezpečnostní upozornění

    Výzkumníci ukazují, jak mohou otevřené tunely a IPv6 Extension Headers synchronizovat pakety do krátkých provozních špiček. V kontrolovaném experimentu naměřili přes 180násobnou koncentraci paketového toku vůči průměrné rychlosti odesílání — nikoli 180násobné zvětšení objemu dat. Článek obsahuje metodiku, limity měření i mitigace pro GRE, IPIP a další tunely.

    vencour | Komentářů: 1
    24.10. 12:44 | Pozvánky

    Po velkém úspěchu prvního MobileLinux Hackdaye se vracíme do Českých Budějovic s druhým ročníkem. V pátek 30. října 2026 od 10:00 se v prostorách Jihočeské univerzity uskuteční Embedded & MobileLinux Hackday #2. Těšit se můžete na témata jako Immutable Linux na telefonech (BengalOS), U-Boot a upstream vývoj, AI optimalizace pro embedded systémy nebo otevřený hardware. Nebude chybět praktické hackování, sdílení zkušeností a možnost … více »

    lkocman | Komentářů: 1
    24.10. 00:44 | Bezpečnostní upozornění

    Dne 21. října 2026 vydal projekt Node.js bezpečnostní aktualizace opravující deset zranitelností, včetně jedné umožňující potenciální vzdálené spuštění kódu (RCE). Nejzajímavější je CVE-2026-111497, chyba dekodéru Brotli, kterou objevili výzkumníci využívající OpenAI Codex Security. Chyba je v nativním dekodéru Brotli, nikoli v samotném JavaScriptu. Speciálně vytvořený komprimovaný vstup způsobí, že dekodér zamění

    … více »
    vencour | Komentářů: 16
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (20%)
     (30%)
     (9%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2923 hlasů
     Komentářů: 34, poslední včera 08:24
    Rozcestník

    Novinky v Python 2.5 - 2 (korutiny, konstrukce with)

    20. 12. 2006 | Michal Vyskočil | Programování | 7480×

    Před nějakým časem vyšla nová verze Pythonu. Pokud vás tento jazyk zajímá, pojďte si přečíst seznam změn, jako jsou rozšířené vlastnosti generátorů, pomocí nichž je možné psát korutiny, nebo nejvýraznější změna — konstrukce with.

    Nové vlastnosti generátorů

    Python 2.5 přináší jednoduchý způsob, jak předávat generátorům hodnoty. Tak jak byly představeny ve verzi 2.3, dokázaly pouze vrátit výstup. Nebyla možnost, jak do nich přidat nějaké nové informace. Špinavé triky spočívaly v používání globálních proměnných, přes které se potřebné parametry předávaly.

    Co je to vlastně generátor? Jedná se o objekt, který vytváří svoje hodnoty dynamicky za běhu. Klasickým příkladem je xrange. Zatímco range vytvoří celý seznam v paměti a potom se nad ním iteruje, generátorový xrange hodnoty vytváří a vrací průběžně. Jednoduchý příklad je:

    def counter (maximum):
        i = 0
        while i < maximum:
            yield i
            i += 1
    

    Výsledkem volání counter(10) je iterátor vracející hodnoty od 0 do 9. Konstrukce yield se chová podobně jako return, pouze s tím rozdílem, že lokální proměnné zůstávají v paměti (podobá se to tak statickým proměnným v C). Metoda next() tedy znovu zavolá kód iterátoru, ovšem s tím, že hodnoty jsou zachovány z předchozí iterace.

    Zatímco do teď byl yield příkazem, který nevracel hodnotu, v nové verzi se jedná o výraz, jehož výsledek je možné svázat se jménem proměnné.

    val = (yield i)
    

    Doporučuje se kód vždy uzavřít do závorek, pokud s návratovou hodnotou něco děláte. Nejsou sice pokaždé důležité (PEP 342 obsahuje přesná pravidla, kdy je použít a kdy ne), ale je jednodušší je používat vždy, přesto, že to může být mírně nepythonovské. Metoda send(value) odesílá hodnoty do generátoru. Nejlepší bude asi uvést příklad:

    def counter (maximum):
        i = 0
        while i < maximum:
            val = (yield i)
            # Pokud došlo k předání parametru, změň vnitřní hodnotu čítače
            if val is not None:
                i = val
            else:
                i += 1
    

    a zde je způsob, jakým můžeme ovlivnit hodnoty vnitřního čítače:

    >>> it = counter(10)
    >>> print it.next()
    0
    >>> print it.next()
    1
    >>> print it.send(8)
    8
    >>> print it.next()
    9
    >>> print it.next()
    Traceback (most recent call last):
    File ``t.py'', line 15, in ?
        print it.next()
    StopIteration
    

    V případě, kdy použijeme metodu send(value), yield vrací hodnotu value. Při zavolání metody next() vrací None.

    Mimo send() byly přidány dvě metody. První z nich throw(type, value=None, traceback=None) slouží ke generování výjimek z těla generátoru. Druhá, metoda close(), vyvolá uvnitř generátoru výjimku GeneratorExit, která jej ukončí. Po zachycení této výjimky musí generátor vyvolat GeneratorExit, anebo StopIteration, přičemž zachycení této výjimky v těle generátoru není povoleno a vede k vyvolání RuntimeError. Případný úklidový kod musí být v bloku finally.

    Souhrn těchto změn změnil generátory z pozice pouhých producentů na producenty i konzumenty. Staly se z nich korutiny (coroutines), což je obecnější forma podprogramů (subroutines). Zatímco běžné podprogramy začínají na jednom a končí na jiném místě, korutiny mohou být zavolány, ukončeny a pozastaveny na několika místech (v místech výrazu yield).

    Navíc, metoda close() má jeden postranní efekt. Je volána v případě, že je objekt generátoru odklízen z paměti (odborněji garbage-collected). To znamená, že jeho kód může před svým ukončením proběhnout ještě naposledy. Syntaktické omezení, že yield není možné kombinovat s try ... finally bylo zrušeno. Tyto změny souvisí i s konstrukcí with, která je v PEP 343.

    PEP 342, Coroutines via Enhanced Generators
    PEP sepsal Guido van Rossum a Phillip J. Eby; implementoval Phillip J. Eby. Navíc obsahuje zajímavější [some fancier] způsoby použití generátorů jako korutin.

    Konstrukce with

    Konstrukce with zpřehledňuje kód, který by předtím musel používat try ... finally k zabezpečení úklidového kódu. Jedná se o novou řídící strukturu:

    with expression [as variable]:
        with-block
    

    Výraz je vyhodnocen a jeho výsledkem může být objekt podporující context management protocol. Návratovou hodnotu můžeme volitelně pojmenovat. Objekt nyní může implementovat kód, který proběhne před blokem with a nějaký úklidový kód, který je proveden po ukončení bloku, včetně případu, že vyhodí výjimku.

    Nejprve musíme přidat následující direktivu - from __future__ import with_statement, přičemž se očekává, že od verze 2.6 to bude výchozí nastavení. Některé standardní objekty obsahují podporu pro context management protocol už nyní. Příkladem je soubor:

    with open('/etc/passwd', 'r') as f:
        for line in f:
            print line
    

    Po vykonání tohoto kódu dojde k automatickému uzavření souboru a to i v případě, že smyčka for vyvolá výjimku.

    Nová funkce localcontext() v modulu decimal umožňuje snadno ukládat a obnovovat kontext desítkových čísel, což zahrnuje přesnost a způsoby zaokrouhlení.

    from decimal import Decimal, Context, localcontext
    
    # Výchozí přesnost 28
    v = Decimal('578')
    print v.sqrt()
    
    with localcontext(Context(prec=16)):
        # V tomto bloku je nastavena přesnost 16.
        # Originální stav bude automaticky obnoven
        print v.sqrt()
    

    PEP 343, The ``with'' statement
    PEP sepsal Guido van Rossum a Nick Coghlan; implementoval Mike Bland, Guido van Rossum a Neal Norwitz. PEP ukazuje kód generovaný pro tuto konstrukci, který může pomoci pochopit, jak to celé vlastně pracuje.

    Píšeme objekty s context management protocol

    Používat with je poměrně jednoduché. Implementace takové podpory je složitější. Spousta lidí bude používat with pouze ve spojení s existujícími objekty, a tak nepotřebuje znát nízkoúrovňové detaily. Ovšem autoři nových objektů pozadí této techniky znát musí, pokud chtějí, aby uživatelé jejich objektů mohli používat with.

    Na vyšší úrovni context management protocol znamená:

    • Vyhodnocený výraz může vrátit objekt zvaný ``context manager''. Ten musí obsahovat speciální metody __enter__() a __exit__().
    • Metoda __enter__() se zavolá a návratová hodnota se sváže s proměnnou VAR. Pokud nebyla napsána klauzule 'as VAR', jednoduše se zahodí.
    • Kód v těle with (BLOCK) se začne provádět.
    • Pokud BLOCK vyvolá výjimku, dojde k zavolání __exit__(type, value, traceback), přičemž stejné údaje jsou vráceny i sys.exc_info(). Návratová hodnota této metody určuje, zda se výjimka zavolá znovu, či ne. Jakákoli nepravdivá hodnota znovu vyvolá výjimku a hodnota True ji potlačí.
    • Pokud BLOCK žádnou výjimku nevyvolá, metoda __exit__() se stejně zavolá, ale všechny její parametry obsahují None.

    Ukážeme si teď vše na příkladu, což jsou databázové transakce. Pro neznalé: každá slušná databáze zpracovává požadavky v transakcích. Transakce se sestává z jednoho nebo několika příkazů, které musí být na konci potvrzeny (commit), anebo mohou být odvolány (roll-back). Ostatní vlastnosti, jako například atomicita transakcí, nejsou pro náš příklad významné.

    Cílem je mít možnost napsat něco jako:

    db_connection = DatabaseConnection()
    with db_connection as cursor:
        cursor.execute('insert into ...')
        cursor.execute('delete from ...')
    

    Transakce může být potvrzena, pokud blok kódu proběhne bezchybně, anebo odvolána, když dojde v výjimce. Základní rozhraní pro DatabaseConnection je potom:

    class DatabaseConnection:
        # Databázové rozhraní
        def cursor (self):
            "Vrací objekt kurzor a začíná novou transakci"
        def commit (self):
            "Potvrdí (commit) transakci"
        def rollback (self):
            "Odvolá (roll-back) transakci"
    

    Implementace metody __enter__() je jednoduchá. Pouze musí začít novou transakci. V tomto případě je konkrétní kurzor (v databázové terminologii se tak označuje ukazatel na právě zpracovávaný řádek) užitečný, takže jej vrátíme. Uživatel jej poté může pojmenovat a používat.

     def __enter__ (self):
        # Code to start a new transaction
        cursor = self.cursor()
        return cursor
    

    Naproti tomu metoda __exit__() je trochu komplikovanější. Nejprve musí zjistit, zda nedošlo k výjimce. Pokud ne, transakci potvrdí, pokud k výjimce dojde, transakci odvolá. V následujícím kódu zajistíme znovuvyvolání výjimky vrácením výchozí hodnoty None.

     def __exit__ (self, type, value, tb):
        if tb is None:
            # No exception, so commit
            self.commit()
        else:
            # Exception occurred, so rollback.
            self.rollback()
            # return False
    

    Modul contextlib

    Nový modul contextlib obsahuje užitečné funkce a dekorátory, které usnadňují psaní objektů, které podporují with. Dekorátor se nazývá contextmanager a umožňuje nám napsat pouze jednu funkci místo psaní třídy. Generátor může pomocí yield vrátit pouze jednu hodnotu. Kód nad konstrukcí yield je proveden jako __enter__(), hodnota vrácená výrazem s yield se sváže se jménem v klauzuli as name. Kód po výrazu s yield potom slouží jako metoda __exit__(). Náš příklad teď tedy vypadá takto:

    from contextlib import contextmanager
    
    @contextmanager
    def db_transaction (connection):
        cursor = connection.cursor()
        try:
            yield cursor
        except:
            connection.rollback()
            raise
    else:
        connection.commit()
    
    db = DatabaseConnection()
    with db_transaction(db) as cursor:
    ...
    

    Modul contextlib rovněž obsahuje funkci nested(mgr1, mgr2, ...) která umí zkombinovat několik context manažerů, a proto není nezbytně nutné psát vnořené with. Například je možné spojit transakci se zámkem vlákna:

    lock = threading.Lock()
    with nested (db_transaction(db), lock) as (cursor, locked):
    ...
    

    Závěr

    V posledním díle si (občas dost letecky) probereme zbytek novinek, jako nové hierarchie tříd pro výjimky nebo způsob, jak přímo spouštět funkce z C knihoven.

    Nejčtenější články posledního měsíce

    Týden na ITBiz: Tržby z podnikových úložných systémů se meziročně zvýšily o 33,6 %
    Týden na ITBiz: Incident OpenAI a Hugging Face ukázal limity softwarové ochrany
    Týden na ITBiz: 88 % vrcholových manažerů se obává, že selhání v oblasti datové suverenity by je mohlo stát místo

    Nejkomentovanější články posledního měsíce

    Událo se v týdnu 40/2026
    Událo se v týdnu 41/2026
    Událo se v týdnu 42/2026
      všechny statistiky »

    Seriál Novinky v Python 2.5 (dílů: 3)

    Novinky v Python 2.5 (první díl)
    <—« Novinky v Python 2.5
    »—> Novinky v Python 2.5 - 3
    Novinky v Python 2.5 - 3 (poslední díl)

    Související články

    Novinky v Python 2.5
    Standardní knihovna pro Python - 1 (builtins)
    Standardní knihovna pro Python - 2 (builtins 2)
    Standardní knihovna pro Python - 3 (builtins 3)
    Standardní knihovna pro Python - 4 (builtins 4)
    Standardní knihovna pro Python - 5 (řetězce)
    Ruby pro začátečníky - 1
    Seriál: BASH
    Python a PyQt - 1 (úvod)
    Python a PyQt - 2 (podmínky, cykly, tlačítka)
    Začínáme programovat v jazyce Python
    Kommander - 1 (Skriptované GUI)
    Kommander - 2 (Starý parser)
    Kommander - 3 (Nový parser)
    Seriál: Začíname KProgramovať
    Programujeme v PERLu - I
    Programujeme v PERLu - II

    Další články z této rubriky

    LLVM a Clang – více než dobrá náhrada za GCC
    Ze 4 s na 0,9 s – programovací jazyk Vala v praxi
    Reverzujeme ovladače pro USB HID zařízení
    Linux: systémové volání splice()
    Programování v jazyce Vala - základní prvky jazyka
           

    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ář

    20.12.2006 00:32 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5 - 2 (multimetody, konstrukce with)
    Michale, technická – nespletl sis multimetody a korutiny? ;-) Cizí termiti jsou občas zákeřní. ;-)
    20.12.2006 08:02 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5 - 2 (multimetody, konstrukce with)
    Máš pravdu, jak jsem psal úvodníky, napsal jsem tam multimetody (to mám z toho, že si čtu o CLOS ;-)). Blbé je, že to navěky zůstane v URL :-(
    When your hammer is C++, everything begins to look like a thumb.
    20.12.2006 08:12 Robert Krátký | skóre: 94 | blog: Robertův bloček
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5 - 2 (multimetody, konstrukce with)
    Blbé je, že to navěky zůstane v URL :-(
    Ale kdež... už je to opraveno :-)
    20.12.2006 18:35 disorder | blog: weblog
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5 - 2 (multimetody, konstrukce with)
    som si ani nevsimol...

    http://www.abclinuxu.cz/clanky/programovani/novinky-v-python-2.5-2-korutiny-konstrukce-with

    asi trest za take skarede slovo - to je tak, ked sa nasilu preklada... :)
    20.12.2006 01:03 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5 - 2 (multimetody, konstrukce with)
    jsou generatory neco jineho nez uzaver?
    (define (counter) 
      (define value 0)
      (lambda y 
        (set! value (+ value (if (null? y) 1 (car y))))
        value))
    
    napadlo me (mirne ovlivnen dnesnim clankem), ze pomoci generatoru jde zavest line vyhodnocovani a s tim spojene streamy. je to moc hezka hracka... ale ted otazka jestli to nekdo v praxi pouzije....
    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    20.12.2006 01:09 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5 - 2 (multimetody, konstrukce with)
    Tak trošku. Na implementaci generátorů syntakticky ekvivalentním těm pythonovským bys ve Scheme asi potřeboval napsat transformační makro, které ošetří existenci více možných vstupních bodů. Ale lokální proměnné generátoru by to makro samozřejmě nejspíš nacpalo do uzávěru.
    20.12.2006 01:16 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5 - 2 (multimetody, konstrukce with)
    aha, uz to vidim... prehledl jsem, ze je tam navic metoda send... myslel jsem, ze se to predava pomoci nextu... a na to uz dve fce jsou potreba... a tudiz i nejake makro nebo funkce na zabaleni...
    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    20.12.2006 01:27 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5 - 2 (multimetody, konstrukce with)
    Ale kdepak, tohle jsem neměl na mysli. Měl jsem na mysli to, že provádění kódu generátoru se při prvním volání začíná (lexikálně) skutečně prvním řádkem kódu, ale po yieldu se vrací provádění za poslední provedený yield. Ten tam je minimálně jeden (Python pozná generátor právě přítomností alespoň jednoho yieldu), to znamená minimálně dva vstupní body (začátek a yield). Kdyby tam yieldy byly dva, dá se do generátoru vstoupit na prvním řádku, do kódu za prvním yieldem a do kódu za druhým yieldem. A tak dále. Takže generátor musí, abstraktně vzato, mezi výstupem a dalším vstupem zachovat informace o tom, jaké jsou hodnoty lokálních proměnných a odkud se má pokačovat, ne? Těch více vstupních bodů je tam i bez send(). Tedy více vstupních bodů na straně volaného kódu.
    20.12.2006 01:51 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5 - 2 (multimetody, konstrukce with)
    aha, tak to uz vypada o poznani chytrejc... celou dobu jsem si rikal, kde tam jsou ty korutiny a co je na tom tak uzasneho... ve schemu by to byla spis kombinace uzaveru a unikove fce z call/cc, ale o poznani slozitejsi
    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    20.12.2006 10:59 Tom.š Ze.le.in | skóre: 21 | blog: tz
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5 - 2 (multimetody, konstrukce with)
    Mně to zase trochu připomíná balík series z Common Lispu (který se skoro dostal do standardu). I když ten kromě "generátorového" přístupu ještě, pokud to jde, provádí transformaci kódu na cyklus.
    20.12.2006 11:05 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5 - 2 (korutiny, konstrukce with)
    Ještě jsem ani nedočetl a už mám otázku: hned ten první příklad, fungoval by tak, jak je napsán, nebo je tam blbě odsazení? Přijde mi to úsměvné :-)
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    20.12.2006 14:25 mydlo
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5 - 2 (korutiny, konstrukce with)
    Aky je rozdiel medzi generatorom a iteratorom?
    21.12.2006 15:02 JS
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5 - 2 (korutiny, konstrukce with)
    Generator je konstrukce, ktera postupne produkuje nejakou (potencialne nekonecnou) posloupnost objektu na pozadani (tj. kazdy vraceny objekt se pocita az kdyz je treba).

    Iterator je specialni pripad generatoru - produkuje odkazy na postupne vsechny cleny nejake slozitejsi datove struktury, napr. stromu, ale muze jit i o zaznamy v souboru apod.

    Vice se da najit na anglicke Wikipedii napriklad.

    Založit nové vlákno • Nahoru

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