tags:

views:

193

answers:

3
+2  Q: 

tcl curly braces

hi

I'm learning Tcl/Tk and am confused on the usage of curly braces in tcl.

To me it seems to be used to both indicate scope and declare strings! Is this a bug(or feature)?

Is my interpretation correct?

A: 

curly braces group words together to become arguments. you can find plenty tcl stuffs on the internet by googling. Here's an intro

ghostdog74
+5  A: 

In a nutshell,

  • Tcl's braces act like sh's single quotes -- group words (and lines) without interpolation.
  • Tcl's double quotes act like sh's double quotes -- allowing interpolation.

The fact that you use curly braces in a proc definition is not mandatory. It's just the most convenient way to pass a script as an argument to proc without interpolating.

These are equivalent

proc add3 {a b c} {
    return [expr {$a + $b + $c}]
}

and

proc add3_weird [list a b c] "return \[expr {\[set a] + \[set b] + \[set c]}]"

Once you internalize Tcl quoting, you'll realize how truly flexible Tcl can be.

glenn jackman
In case it wasn't clear in the answer, interpolation means that substitution will happen. If you have a variable named myvar = "some string", then {a $myvar b} will result in the string literal "a $myvar b"... while "a $myvar b" will result in the string literal "a some string b"
RHSeeger
thanks, i think i get it now. will have to use tcl a little more to understand fully i guess.
jack the lesser
I like to say "you only need to use curly braces when you need to use curly braces", meaning that -- unlike most languages -- curly braces are *only* for quoting. There's nothing in the language that ever requires you use curly braces. They are quoting mechanism which you can choose to use or not. Of course, there are best practices that say when it's wise to use them...
Bryan Oakley
A: 

man n Tcl

That is the manual page for the Tcl interpreter! Read it. Read it again! You might even consider to go to a quiet place and read it out loud. This will hinder you from reading too fast. Every single letter counts.

Once you find yourself in "quoting hell" go back to this document and read it again.

There is an online version at: http://www.tcl.tk/man/tcl8.5/TclCmd/Tcl.htm

amucha