Generator (informatica): verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
kGeen bewerkingssamenvatting
plus generatorexpressies
Regel 6:
 
===Python===
 
====Generator====
 
In [[Python (programmeertaal)|Python]] wordt een generator geconstrueerd met het [[sleutelwoord]] <code>yield</code>. Hiermee wordt een waarde teruggegeven. Dit sleutelwoord kan in een functie gebruikt worden waarmee deze verandert in een generator.
Regel 30 ⟶ 32:
 
Wanneer de generator geheel uitgevoerd is, wordt de lus niet meer uitgevoerd aangezien er geen waarden meer zijn. In dit voorbeeld blijft de generator telkens getallen teruggeven waardoor men in de lus moet bepalen wanneer men klaar is. Zodra de executie van de lus wordt beëindigd, is de generator niet meer nodig voor het genereren van waarden.
 
====Generatorexpressie====
 
In Python zijn ook generatorexpressies aanwezig waarmee generatoren genoteerd kunnen worden in de vorm van een [[Expressie (programmeren)|expressie]]. Deze generatorexpressies kunnen alleen <code>for</code>-lussen en <code>if</code>-[[statement]]s bevatten.
 
Een voorbeeld van een generatorexpressie waarmee alle getallen onder de 1000 die deelbaar zijn door drie gegenereerd kunnen worden:
 
<source lang="python">
g = (n for n in range(1000) if n % 3 == 0)
</source>
 
<code>g</code> is nu een generator die op dezelfde manier gebruikt kan worden als <code>even_getallen</code> in het vorige voorbeeld.
 
De bovenstaande generatorexpressie kan ook genoteerd worden als:
 
<source lang="python">
def g():
for n in range(1000):
if n % 3 == 0:
yield n
</source>
 
===Haskell===