The list is the basic Tcl data structure. A list is simply an ordered collection of stuff; numbers, words, strings, or other lists. Even commands in Tcl are just lists in which the first list entry is the name of a proc, and subsequent members of the list are the arguments to the proc.
Lists can be created in several ways:
set lst {{item 1} {item 2} {item 3}}
set lst [split "item 1.item 2.item 3" "."]
set lst [list "item 1" "item 2" "item 3"]
An individual list member can be accessed with the lindex command.
The brief description of these commands is:
Note: lists start from 0, not 1, so the first item is at index 0, the second item is at index 1, and so on.
The items in list can be iterated through using the foreach command:
foreach varName list body
The foreach command will execute the body code one time for each list item in list. On each pass, varName will contain the value of the next list item.
In reality, the above form of foreach is the simple form, but the command is quite powerful. It will allow you to take more than one variable at a time from the list:
foreach {a b} $listofpairs { ... }
You can even take a variable at a time from multiple lists! For example:
foreach a $listOfA b $listOfB { ... }
or:
foreach {a b} $listOfAB { ... }
Furthermore, lists can be nested:
set nestedList { {1 2 3} {A B C D} {xyz 33 1A} } puts "The last element from the second sublist is:" puts " [lindex $nestedList 1 end]"
producing:
The last element from the second sublist is: D
set x "a b c d e f g h" puts "Item at index 2 of the list {$x} is: [lindex $x 2]\n" set y [split 7/4/1776 "/"] puts "We celebrate on the [lindex $y 1]'th day of the \ [lindex $y 0]'th month\n" set z [list puts "arg 2 is $y" ] puts "A command resembles: $z\n" set i 0 foreach j $x { puts "$j is item number $i in list x" incr i } set i 0 foreach {a b} $x { puts "Pair $i in list x: $a, $b" incr i }
Item at index 2 of the list {a b c d e f g h} is: c We celebrate on the 4'th day of the 7'th month A command resembles: puts {arg 2 is 7 4 1776} a is item number 0 in list x b is item number 1 in list x c is item number 2 in list x d is item number 3 in list x e is item number 4 in list x f is item number 5 in list x g is item number 6 in list x h is item number 7 in list x Pair 0 in list x: a, b Pair 1 in list x: c, d Pair 2 in list x: e, f Pair 3 in list x: g, h