Kroc - 17 Septembre 2007 : Encore une commande qui me manquait pour manipuler les listes. Celle-ci permet de retourner une liste $liste sans l'élément $index (qui est un index, alors que dans lremove on enlève les éléments selon un patron).
proc ::ldelete {liste index} {
if {[llength $liste] <= 1} {return $liste}
if {$index +1 > [llength $liste]} {return $liste}
if {$index +1 == [llength $liste]} {set index end}
if {$index == 0} {
set range [list 0 1]
set index 1
} elseif {$index eq "end"} {
set index [expr {[llength $liste]-2}]
set range [list $index [expr {[llength $liste]-1}]]
} elseif {![string is integer -strict $index]} {
return $liste
} else {
set range [list $index [incr index]]
}
return [eval lreplace [list $liste] $range [list [lindex $liste $index]]]
}Utilisation :
% set maliste {{A B C} {D E F} {G H I} {J K} L}
% ldelete $maliste 3
{A B C} {D E F} {G H I} L
% ldelete $maliste end
{A B C} {D E F} {G H I} {J K}Voir également :
lremove, list, lsearch, lreplace, lreverse, lset