wiki zsh tableaux : erreur !
Salut, Lu sur la page tableau de zsh: % lists=(global www asyd guest) % lists[(r)global]='' % echo $lists www asyd guest c'est une erreur ! l'élément est vide mais pas supprimé ! explications : on crée le tableau et on affiche. % a=( un test bete ) % index=0; for el ( $a ) { print $(( ++index )) $el } 1 un 2 test 3 bete j'affecte une chaine vide a a[2] j'affiche % a[2]='' % index=0; for el ( $a ) { print $(( ++index )) $el } 1 un 2 bete on peut croire que $a n'a plus que 2 elements, ce qui est faux : % index=0; for el ( "$a[@]" ) { print $(( ++index )) $el } 1 un 2 3 bete en fait, c'est le contexte d'expansion de a qui change, ce que la boucle for recupere est une expansion de $a et non $a lui-même. dans le guide zsh, chapitre 15.2.2 ( Array Element Assignment ), on peur lire : To delete an element of an ordinary array, assign `()' to that element. To delete an element of an associative array, use the unset command: unset "NAME[EXP]" donc : % a[2]=() % index=0; for el ( "$a[@]" ) { print $(( ++index )) $el } 1 un 2 bete conclusion : qui corrige ? marc -- t�l�phone : 03.90.24.00.19 courriel : marc.chantreux@ulpmm.u-strasbg.fr ---------------------------------------
On ven 08 septembre, Marc Chantreux wrote:
Salut,
Lu sur la page tableau de zsh:
% lists=(global www asyd guest) % lists[(r)global]='' % echo $lists www asyd guest
c'est une erreur ! l'élément est vide mais pas supprimé !
dans le guide zsh, chapitre 15.2.2 ( Array Element Assignment ), on peur lire :
To delete an element of an ordinary array, assign `()' to that element. To delete an element of an associative array, use the unset command:
Au temps pour moi, je corrige sur le wiki. -- http://asyd.net/home/ - Home Page http://guses.org/home/ - French Speaking Solaris User Group
le 08/09/2006, Bruno Bonfils nous �crivait :
On ven 08 septembre, Marc Chantreux wrote:
Salut,
Lu sur la page tableau de zsh:
% lists=(global www asyd guest) % lists[(r)global]='' % echo $lists www asyd guest
c'est une erreur ! l'élément est vide mais pas supprimé !
dans le guide zsh, chapitre 15.2.2 ( Array Element Assignment ), on peur lire :
To delete an element of an ordinary array, assign `()' to that element. To delete an element of an associative array, use the unset command:
Au temps pour moi, je corrige sur le wiki.
au passage, il faudrait garder cette histoire d'expansion sous le coude. C'est vraiment une source de bugs tordus -- t�l�phone : 03.90.24.00.19 courriel : marc.chantreux@ulpmm.u-strasbg.fr ---------------------------------------
On ven 08 septembre, Marc Chantreux wrote:
dans le guide zsh, chapitre 15.2.2 ( Array Element Assignment ), on
Au temps pour moi, je corrige sur le wiki.
au passage, il faudrait garder cette histoire d'expansion sous le coude. C'est vraiment une source de bugs tordus
http://cli.asyd.net/home/shell/zsh/grammaire/tableaux updated -- http://asyd.net/home/ - Home Page http://guses.org/home/ - French Speaking (Open)Solaris User Group
le 10/09/2006, Bruno Bonfils nous �crivait :
http://cli.asyd.net/home/shell/zsh/grammaire/tableaux updated
well done! -- t�l�phone : 03.90.24.00.19 courriel : marc.chantreux@ulpmm.u-strasbg.fr ---------------------------------------
participants (2)
-
Bruno Bonfils
-
Marc Chantreux