Generator (computer)

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În informatică , un generator este o rutină specială care poate fi utilizată pentru a controla comportamentul unei iterații într-o buclă . Un generator este foarte similar cu o funcție care returnează un vector , în care un generator are parametri, care pot fi numiți și generează o succesiune de valori.

În loc să construiască un vector care conține toate valorile și să le returneze simultan, un generator furnizează valorile pe rând, ceea ce necesită mai puțină memorie și, astfel, permite apelantului să înceapă să proceseze primele valori imediat. Pe scurt, un generator arată ca o funcție, dar se comportă ca un iterator .

Generatoarele pot fi puse în aplicare în construcții de control al fluxului mai expresive, ca o continuare a obiectelor de primă clasă sau ca co-funcții.

Generatoarele apar pentru prima dată în 1975 în CLU ; acum sunt disponibile în Python , C # , JavaScript , Ruby și alte limbi. În CLU și C #, generatoarele sunt numite iteratoare și în Ruby enumeratoare .

Piton

Un exemplu de generator în Python:

 def countfrom (n):
    în timp ce este adevărat :
        randament n
        n + = 1

# Exemplu: tipăriți numere între 10 și 20.
# Rețineți că această iterație se termină normal,
# în ciuda faptului că countfrom () este scris ca o buclă infinită.

pentru i în număr de la ( 10 ):
    dacă i <= 20 :
        print ( i )
    altceva :
        pauză

# Un alt generator, care produce primele numere prime
#up to "to" if to> = 2, altfel la nesfârșit, după cum este necesar.

primele def ( la ):
    produce 2 # primul număr prim și singurul care este egal
    n = 3
    p = []
    în timp ce n <= la sau la < 2 :
        sqr_n = int ( n ** 0,5 )
        dacă nu există ( n % f == 0 pentru f în p dacă f <= sqr_n ): # funcționează în Python 2.5+ sau cu pachetul NumPy care introduce orice ()
            randament n
            p . anexa ( n )
        n + = 2 # Mă uit doar la numere impare
    ridicați StopIteration

Rubin

Ruby acceptă generatoare (începând cu versiunea 1.9) sub forma unei clase Enumerator.

 # Generator dintr-un obiect enumerabil
chars = Enumerator . nou ( [ 'A' , 'B' , 'C' , 'Z' ] )

4 . ori { pune caractere . următor }

# Generator dintr-un bloc
count = Enumerator . nou do | producător |
  i = 0
  buclă { yielder . randament i + = 1 }
Sfârșit

100 . ori { pune numărul . următor }

Elemente conexe

Controlul autorității LCCN (EN) sh85053846 · GND (DE) 4129040-9 · BNF (FR) cb122247630 (data)
Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT