Tcl array Command
last modified April 3, 2025
The Tcl array
command provides operations for working with
associative arrays. Arrays in Tcl are collections of key-value pairs.
They are similar to dictionaries in other languages.
Basic Definition
Tcl arrays are associative arrays where keys can be arbitrary strings. They are different from traditional indexed arrays in other languages.
Syntax: array option arrayName ?arg ...?
. The command takes
an operation name, array name, and optional arguments depending on the
operation.
Creating and Setting Array Elements
This example shows how to create an array and set its elements.
array set colors { red #ff0000 green #00ff00 blue #0000ff } puts $colors(red) puts $colors(green) puts $colors(blue)
Here we create an array named colors
with three elements.
The array set
command initializes the array with key-value
pairs. We then access individual elements using the $array(key)
syntax.
Getting Array Size and Names
The array size
and array names
commands provide
information about an array.
array set fruits { apple 10 orange 15 banana 20 } puts "Number of fruits: [array size fruits]" puts "Fruit names: [array names fruits]"
This code creates a fruits array and then displays its size and keys.
array size
returns the number of elements, while
array names
returns a list of all keys.
Iterating Over Array Elements
The array get
command converts an array to a list, which
can be used for iteration.
array set temperatures { monday 72 tuesday 68 wednesday 75 } foreach {day temp} [array get temperatures] { puts "$day: $temp°F" }
This example shows how to iterate through all elements of an array.
The array get
command returns a flat list of key-value
pairs, which we process with foreach
.
Checking Array Existence
The array exists
command checks if a variable is an array.
array set user { name John age 30 city New York } if {[array exists user]} { puts "User array exists" } else { puts "User array does not exist" }
This demonstrates how to verify if a variable is an array before attempting to use array operations on it. The command returns 1 if the variable is an array, 0 otherwise.
Searching Array Elements
The array search
functionality can be implemented using
array names
with pattern matching.
array set books { tcl_programming 25 python_guide 30 tcl_cookbook 20 java_basics 15 } set tcl_books [array names books *tcl*] foreach book $tcl_books { puts "$book: \$[set books($book)]" }
This example searches for all books with "tcl" in their names. The
array names
command with a glob pattern returns matching
keys. We then display these books with their prices.
Unsetting Array Elements
The array unset
command removes elements or entire arrays.
array set config { debug 1 logfile /var/log/app.log timeout 30 } array unset config logfile puts "Remaining config: [array get config]" array unset config puts "Array exists after unset: [array exists config]"
Here we first remove just the logfile
element from the
array, then we remove the entire array. The command can target
specific elements or the whole array.
Best Practices
- Initialization: Use
array set
for bulk initialization. - Checking: Always check if an array exists before using it.
- Patterns: Use glob patterns with
array names
for searching. - Memory: Unset arrays when no longer needed to free memory.
- Naming: Choose descriptive array names for better code clarity.
This tutorial covered the Tcl array
command with practical
examples showing its usage in different scenarios.
Author
List all Tcl Tutorials.