2010-07-25 5 views
2

Tout d'abord, est-il correct d'utiliser le terme pointeur lorsque vous parlez de l'index interne dans une liste?Comment deux variables pointant vers la même liste Rebol peuvent-elles avoir des pointeurs différents?

Considérons le code Rebol suivant:

a: [1 2 3 4 5 6 7 8 9] 
a: at a 4 
b: a 

un et b tous les deux vers la même liste et à la fois le retour [4 5 6 7 8 9]. C'est ce que je comprends. Cependant, je ne vois pas comment l'indice interne peut être déplacé dans un , mais pas dans b:

a: head a 
length? a  ; Returns 9 
length? b  ; Returns 6 

Comment sont les indices internes distinct aux un et b?

Enfin, est-il exact de Rebol dire que un et b sont références à la liste [1 2 3 4 5 6 7 8 9], en utilisant la définition de référence en Java ou C#?

Répondre

1

Dans la terminologie plus REBOL, une est une variable qui fait référence à série. Cette variable, a, a intrinsèquement une position actuelle.

b est également une variable qui fait référence à une série et qui possède donc intrinsèquement une position actuelle.

Comme il arrive, à la fois un et b référence de la même série , mais chacun a une position différente actuelle. La position actuelle est un attribut de la variable série. Cela peut être utile à certains moments.

Le REBOL de base Manuel a un chapitre sur série ..... vérifier en particulier l'article 10 sur Variables de la série multiples:

http://www.rebol.com/docs/core23/rebolcore-6.html#section-10 
+0

Merci pour le lien. En fait, je ne connaissais pas la documentation en ligne de Rebol et je l'ai appris dans le livre Auverlot/Wood. Je ne sais pas comment j'ai raté les docs en ligne! – user400843

2

réponse de Sunanda est proche, mais pas exacte . En plus du manuel qu'il mentionne, il y a aussi le Rebol progamming wikibook, contenant une section sur la série http://en.wikibooks.org/wiki/REBOL_Programming/Language_Features/Series, ainsi que le wiki REBOL contenant d'autres articles de documentation de divers auteurs (vous pouvez consulter le rebol.net et rebol.org des sites).

Mes réponses:

« Tout d'abord, est-il correct d'utiliser le pointeur terme quand on parle de l'indice interne dans une liste? » - c'est incorrect au moins pour deux raisons. Le premier étant que les données que vous utilisez ne sont pas une liste, mais un bloc (notez qu'il existe un type de données de liste dans REBOL). Le second étant que l'index interne est une valeur entière, pas une adresse mémoire de l'ordinateur."Comment les indices internes sont-ils séparés pour a et b?" - après l'affectation, la variable a ne fait plus référence au même bloc que la variable b, elle fait référence au bloc avec la même tête, mais avec un index différent. L'index fait partie intégrante de la valeur du bloc. Cette propriété n'a pas beaucoup en commun avec les variables comme Sunanda l'a suggéré plus haut. Le fait est que chaque bloc REBOL a un index, bien que la valeur d'index la plus fréquente des blocs REBOL soit 1.

Questions connexes