Mise en forme de code: pensez à utiliser les balises [ tcl ] et [ /tcl ] (sans les espaces bien sûr) autour de vos codes tcl afin d'avoir un meilleur rendu et une coloration syntaxique. x


[à intégrer au wiki] Les listes par l'exemple : aide-mémoire, astuces.
#1
Cet article ne prétend pas remplacer la documentation, mais plutôt la compléter en y apportant l'illustration par l'exemple.


list
list ?arg arg ...?

set variable [list a b c]
=> a b c (définit une variable de type liste et contenant "a b c")
_______________________________________
lindex
lindex $list index
index peut valoir "end" auquel cas le dernier élément de la liste est renvoyé.

lindex {a b c d e f} 3
=> d
lindex {a b c d e f} end
=> f
lindex {{a b c} {d e f} {g h i}} 1 1
=> e
lindex {{a b c} {d e f} {g h i}} 2 1
=> h
lindex {{a b c} {d e f} {g h i}} 2 0
=> g
_______________________________________
split
split $string ?splitChars?

split "comp.unix.misc" .
=> comp unix misc
split "ceci est un test" " "
=> ceci est un test
split "ceci est un test" "e"
=> c {ci } {st un t} st
_______________________________________
lappend
lappend varName ?value value ...?

lappend {a b c} 1 3 4
=> a b c 1 3 4
_______________________________________
lreplace
lreplace $list first last ?element element ...?

lreplace {a b c} 0 0 @
=> @ b c
lreplace {a b c} 1 1
=> a c
lreplace {a b c d e f} 2 4 x y
=> a b x y f
_______________________________________
ldelete n'existe pas mais il est possible d'en imiter la fonction :
lreplace $list first last

lreplace {1 2 3 4 5} 2 2
=> 1 2 4 5
attention, ne pas faire :
lreplace {1 2 3 4 5} 2 2 ""
=> 1 2 {} 4 5
_______________________________________
linsert
linsert $list index element1 ?element2 element3 ...?

linsert {a b c} 0 d e f
=> d e f a b c
linsert {a b c} 1 d e f
=> a d e f b c
_______________________________________
llength
llength $list

llength {a bcd e f}
=> 4
set testlist {a b c}
llength "1 2 $testlist 3"

=> 6 éléments dans la liste substituée
llength {1 2 $testlist 3}
=> 4 éléments dans la liste (dont $testlist n'a pas été substitué)
_______________________________________
lrange
lrange $list first last

set testlist {a bcd e f}
lrange $testlist 1 2
=> bcd e
lrange $testlist 1 end
=> bcd e f
lrange $testlist 2 3
=> e f
_______________________________________
lsearch
lsearch ?options? $list search_term
voyez l'article du wiki pour connaître les options détaillées : http://www.eggdrop.fr/Lsearch
Notez que l'option implicite est -glob si vous ne spécifiez ni -exact, ni -regexp.
-glob -exact et -regexp sont des options exclusives, l'une exclut les autres.
Une recherche -glob considèrera les * comme des jokers et les [ ] comme leurs équivalents regexp, [ab] signifiant a ou b.
L'option -exact fera une recherche littérale dans la liste, considérant les * [ et ] comme des caractères normaux.

lsearch {a b c d e} h
=> -1
lsearch {a b c d e} c
=> 2
_______________________________________
lsort
lsort ?options? $list
voyez l'article du wiki pour connaître les options détaillées : http://www.eggdrop.fr/Lsort
_______________________________________
lreverse
lreverse $list

lreverse {a b c d e}
=> e d c b a
_______________________________________
lrepeat
lrepeat number element1 ?element2 element3 ...?

lrepeat 3 a
=> a a a
lrepeat 3 [lrepeat 3 0]
=> {0 0 0} {0 0 0} {0 0 0}
_______________________________________
lassign
lassign $list varName1 ?varName2 ...?

lassign [list a b c d e f g] variable1 variable2
set variable1
=> a
set variable2
=> b
_______________________________________
lrandomize
lrandomize $list
(mélange les éléments d'une liste)

tcl
proc lrandomize {data} {
	set list_length [llength $data]
	for { set counter 1 } { $counter <= $list_length } { incr counter } {
		set index [rand [expr $list_length - $counter + 1]]
		lappend randomized_list [lindex $data $index]
		set data ldelete $data $index]
	}
return $randomized_list
}

Toute l'actualité de mes scripts ici     (dernière mise à jour le 22/04/2020)

Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.


Possibly Related Threads…
Thread Author Replies Views Last Post
  Un welcome Gardé en mémoire loulou7593 10 6,431 06/05/2008, 22:23
Last Post: CrazyCat
  les listes caline012 2 3,883 17/12/2007, 17:10
Last Post: caline012

Forum Jump:


Users browsing this thread: 1 Guest(s)