Penso che questa analogia sia più simile a una metafora, usata scherzosamente dall'autore per farti pensare concettualmente a cos'è un generatore.
Rivediamo quali iteratori e generatori sono in realtà in Javascript:
An Iterator is an object that knows how to access items from a
collection one at a time, while keeping track of its current position
within that sequence. In JavaScript an iterator is an object that
provides a next()
method which returns the next item in the sequence.
This method can optionally raise a StopIteration exception when the
sequence is exhausted.
Generators provide a powerful alternative: they allow you to define an iterative algorithm by writing a single function which can maintain its own state, and then returning individual values based on that persistent state using the yield
keyword.
In breve, un iteratore è una funzione che restituisce uno di una serie di punti dati ogni volta che viene chiamato, e un generatore è solo un po 'di zucchero sintattico che ti permette di creare tale funzione con la sintassi e la facilità d'uso di un metodo ordinario.
I punti dati restituiti singolarmente da un metodo iteratore possono provenire da una matrice o da una raccolta oppure possono essere generati dal codice. Un generatore pseudo-casuale può essere pensato come un iteratore, dal momento che dargli lo stesso seme di inizializzazione restituirà la stessa sequenza di valori.
Quindi cos'è un derivato? In poche parole, è una funzione che, in un dato punto di una curva, restituisce la pendenza di una linea tangente alla curva in quel punto. Sembra qualcosa del tipo :
Beh,sembrauniteratore,vero?Ilgraficomostrafondamentalmenteunafunzionecheaccettapiùposizionisuccessivesuunacurvaerestituiscelapendenzadellalineainognipuntodellacurva,unvaloreallavolta.
L'unicoproblemaconquestaanalogiaècheuniteratorenondeverestituirevaloriderivati;puòrestituirequalsiasicosa.Ivaloriderivatisonosolounmodoconvenientepercostringertiapensareallanaturadegliiteratori.
Un'analogiamigliorepotrebbeessereundistributorePez.