The difference between lists and strings - Tcl
Archive - Originally posted on "The Horse's Mouth" - 2011-08-16 17:34:11 - Graham EllisThere's not much difference between lists and strings in Tcl. In fact a list is just a string in a particular format, and if you split a string that contains just letters and spaces into a "list" you may not change anything AT ALL. Which means that if you make a coding error you may not spot it until some of the characters which form a part of the list syntax to handle specials are used within the string.
Here's a listish setup:
set john {{tom simon ann sophie cindy}}
But when I split that and iterate through the elements,I don't get what I want - strange things happen with the inner { and }. Code:
set mitems [split $john]
foreach thing $mitems {
puts $thing
}
When I run that, the results I get are:
{tom
simon
ann
sophie
cindy}
As my handling of the list of lists wasn't correct .... what would have been better is to have written
foreach thing $john {
foreach name $thing {
puts $name
}
}
which would give
tom
simon
ann
sophie
cindy
For Perl, Python, Ruby and PHP programmers, who are used to split doing a considerable amount of work, the small step taken by Tcl's split comes as a bit of a surprise, and even people who've been writingTcl for a while can end up scratching their head at extra curly braces which they hadn't expected from code like that above.
I'm teaching Tcl in a couple of weeks ... starting on Tuesday 30th August for delegates new to programming, and the following day for delegates with prior experience of another language - see [here] for a description of that course.