Home > Net >  how to take variable from function in tcl
how to take variable from function in tcl

Time:05-13

i make a function like this

proc function1 {} {
    set x 10
}

and i want to use x in second function like this

proc function2 {x} {
   set y [expr x   10]
} 
puts [function2 x]

invalid command name "x" this is the error i got

i tried to write puts [function2 function1.x] and puts [function2 $x]

i got same error

like it can not read x from first function

how can i solve this error?

CodePudding user response:

The x variable in function1 is local to it and is destroyed when the function returns. You can use

proc function1 {} {
    global x
    set x 10
}

to make it a global variable instead so that it can be seen by a later top-level puts [function2 x]. Or use set ::x 10 to explicitly refer to the variable in the global namespace. Or use variable x to bind it to the proc's namespace instead of the global one if they're different.

CodePudding user response:

Consider function1 which set x and return the value of x as well. In order to use that in function2, you need to call:

puts [function2 [function1]]

By the way, function2 has a bug: You need $x to get the value, not just x.

proc function2 {x} {
   set y [expr $x   10]   ;# <--- $x, not x
} 
  • Related