Maintenant, nous allons aborder une des plus
puissantes capacité de Scriptol, les intervalles.
Les intervalles sont utilisés par les vieux langages classique seulement
dans les structures de contrôle "for", et dans d'autres langages modernes,
avec des syntaxes différentes selon le contexte. En Scriptol, ce concept
est unifié et la même syntaxe s'utilise pour toutes sortes d'intervalles,
il s'agit d'un couple d'indices séparés par deux points: début .. fin.
Exemples:
0 .. 10
x .. y
x * 2 / 4 .. y + 10
|
et ainsi de suite.
Vous pouvez écrire aussi: [x .. ] qui signifie: de x jusqu'à la fin, et
[.. y] qui signifie: du début jusqu'à y inclus.
Vous pouvez utiliser un intervalle pour tester si une valeur fait partie
d'une liste: if x in 10..100
Vous pouvez l'utiliser pour parcourir une liste: for x in 1..100
Vous pouvez extraire une partie de liste: array b = a[x .. y]
Et enfin, vous pouvez remplacer une partie de liste:
a[x .. y] = une autre liste
Pour le moment, nous allons étudier seulement le subscripting d'array et
dict. La syntaxe est la même pour les deux structures car on utilise les
positions et non les clés.
// Créons une liste:
array a = array(x0,
x1, x2, x3, x4, x5, x6, x7, x8)
// Division la liste en trois: array b = a[ .. 2] array c = a[3 .. 5] array d = a[6 .. ]
/*
Maintenant nous avons trois tableaux, avec ces contenus:
a: (x0, x1, x2)
b: (x3, x4, x5)
c: (x6, x7, x8)
*/
// Affichons les tableaux:
b.display()
// etc...
|
array
(
[0] => x0
[1] => x1
[2] => x2
) |
et ainsi de suite...
Pour remplacer un intervalle par une autre liste, un simple assignement
suffit:
a[3..5] = array("a",
"b", "c")
|
Le contenu doit devenir: (x0, x1, x2, "a", "b", "c", x6, x7, x8)
Une sous-liste peut être remplacée soit par une autre liste, ou une valeur
simple, la syntaxe est la même:
La liste devient: (x0, x1, x2, "xyz", x6, x7, x8)
Si nous voulons plutôt remplacer une sous-liste dans le tableau originel,
nous la déclarons "not in list" et la syntaxe est simplement:
Comme nous avons supprimé la sous-liste 3..5 qui était (x3, x4, x5),
le contenu devient mainteant: (x0, x1, x2, x6, x7, x8)
De la même façon que nous pouvons tester si une valeur est à l'intérieur
d'une liste, on peut faire le test sur une sous-liste, par exemple:
array a = array("un,
"deux", "trois") if "deux" in
a[2..5] print "dedans"
|
Nous avons vu plus haut comment tester l'appartenance d'une liste à une
autre, avec l'opérateur &. On peut l'utiliser avec des sous-listes:
array asub = a[2..3] if (asub & b[6..8]) = asub)
print "dedans"
|
Exercices |
1) Dans le tableau suivant:
array a = array("as", "roi", "dame",
"valet", "10")
Extraire le sous-intervalle d'as à roi et le mettre dans le
tableau b.
Il faut le localiser avec la méthode find(text) qui retourne
la position.
Réponse |
|