Kurso de Raku / Funkcia, samtempa, reaktiva kaj reta programado / Funkcia programado / Maldiligentaj kaj senfinaj sekvencoj

La sekvenca operatoro

La sekvenca operatoro ... konstruas liston el komenca ŝablono ĝis fina valoro. Donu al ĝi la unuajn kelkajn elementojn kaj la finpunkton, kaj ĝi eltrovas, kiel la serio daŭras:

say (2, 4 ... 10); # (2 4 6 8 10)

El 2, 4 ĝi konkludas «aldonu du ĉiufoje» kaj daŭrigas ĝis ĝi atingas 10. La paŝo povas esti ankaŭ malsupren:

say (10, 8 ... 2); # (10 8 6 4 2)

Se la elementoj kreskas per multipliko anstataŭ per adicio, la operatoro rimarkas ankaŭ tion:

say (1, 2, 4 ... 64); # (1 2 4 8 16 32 64)

Ĉi tie ĉiu termo estas la duoblo de la antaŭa, do la sekvenco estas geometria.

Kiam la regulo estas pli kompleksa ol la operatoro povas diveni, vi povas provizi ĝin eksplicite kiel fermaĵon de la antaŭaj elementoj. Ekzemple, eksplicita regulo «aldonu la paŝon»:

say (1, * + 2 ... 9); # (1 3 5 7 9)

La bloko * + 2 diras, kiel akiri la sekvan elementon el la kuranta. Per tio ... povas esprimi ajnan sekvencon, kiun vi povas priskribi per regulo.

Praktiko

Vin atendas 1 kvizo pri la enhavo de ĉi tiu temo.

Kursa navigado

Maldiligentaj kaj senfinaj sekvencoj   |   Kvizo — La sekvenca operatoro


💪 Aŭ iru rekte al la ekzercoj de ĉi tiu sekcio.