Voici deux moyens d'avoir la différence entre deux liste, ou plus exactement la liste des éléments de la première liste qui n'appartiennent pas à la seconde.
Cette méthode n'est pas optimale du tout, mais fonctionne sur quasi toutes les versions de tcl :
Cette version est l'approche optimale, moins explicite pour le néophyte mais elle soulage l'eggdrop :
Cette méthode n'est pas optimale du tout, mais fonctionne sur quasi toutes les versions de tcl :
tcl
proc ldiff {list1 list2} {
foreach suppr $list2 {
set ind [lsearch $list1 $suppr]
set list1 [lreplace $list1 $ind $ind]
}
return $list1
}
Cette version est l'approche optimale, moins explicite pour le néophyte mais elle soulage l'eggdrop :
tcl
proc ldiff {list1 list2} {
foreach element $list1 {
if { !($element in $list2) } {
lappend diff $element
}
}
return $diff
}