De retour de tableaux à partir de Procédures TCL
Je veux passer de tableau et tableau à partir d'une procédure, voici l'exemple de code que j'ai essayé. Mais obtenir certaines erreurs..
set a(0) "11"
set a(1) "10"
set a(2) "20"
set a(3) "30"
set a(4) "40"
proc deleten somet {
upvar $somet myarr
for { set i 1} { $i < [array size myarr]} { incr i} {
set arr($i) $myarr($i)
}
return arr
}
array set some[array get [deleten a]]
parray some
lorsque j'exécute ce code j'obtiens l'erreur suivante erroné # args: doit être "ensemble arrayName liste". Je suis assez sûr que je ne veux pas utiliser la liste, comment puis-je définir le tableau retourné par le proc à un autre tableau???
Cela semble être une mauvaise chose à faire dans ce code. Ne serait-il pas plus simple d'utiliser
En général, je suggère d'utiliser des noms descriptifs pour les variables et les procédures. Des noms comme
Un pas en arrière et il semble que vous pouvez utiliser une liste au lieu d'un tableau pour votre besoin. Je dis cela parce que les indices sont des nombres entiers consécutifs. Gardez à l'esprit que dans Tcl, le liste structure de données est équivalent à array dans d'autres langages tels que le C ou le Java.
array set some [array get a];unset some(0)
?En général, je suggère d'utiliser des noms descriptifs pour les variables et les procédures. Des noms comme
deleten
ou somet
ne pas transmettre votre intention et le but.Un pas en arrière et il semble que vous pouvez utiliser une liste au lieu d'un tableau pour votre besoin. Je dis cela parce que les indices sont des nombres entiers consécutifs. Gardez à l'esprit que dans Tcl, le liste structure de données est équivalent à array dans d'autres langages tels que le C ou le Java.
OriginalL'auteur user1270123 | 2012-03-18
Vous devez vous connecter pour publier un commentaire.
L'étape vous avez été absent, c'est que vous revenez
[array get arr]
plutôt que de simplementarr
.L'extrait de code suivant fonctionne ici
Voir Comment passer des tableaux pour de plus amples informations.
OriginalL'auteur Appleman1234