将值从TCL中的返回函数存储到变量中

将值从TCL中的返回函数存储到变量中,tcl,Tcl,我有一个返回字符串的函数,但是我不能将该值存储到变量中。我试过这么做 % set m [return "This is returned value"] This is returned value % puts $m can't read "m": no such variable 有什么建议我可能做错了什么吗? 我也试过这样的东西 % set m [puts "Test"] Test % puts $m ... proc value { } { return rajesh } s

我有一个返回字符串的函数,但是我不能将该值存储到变量中。我试过这么做

% set m [return "This is returned value"]
This is returned value
% puts $m
can't read "m": no such variable
有什么建议我可能做错了什么吗? 我也试过这样的东西

% set m [puts "Test"]
Test
% puts $m
...
proc value { } {
   return rajesh
}

set result [value]
m的输出为空,为什么

更新:


在研究了这个问题之后。看来我有一个方法是不能改变的。此方法将输出打印到屏幕。我想做的是在变量中捕获该输出。

如果您想从函数返回值,它应该是这样的

% set m [puts "Test"]
Test
% puts $m
...
proc value { } {
   return rajesh
}

set result [value]
put
命令不会返回任何值,如果将其分配给变量,则该值将为空字符串

在第一种情况下,在变量赋值中使用了
return
,如

设置m[返回“这是返回值”]

由于
返回
,代码将立即返回。它无处可回。下面的任何代码都不会运行。这就是为什么它失败的原因
无法读取“m”:没有这样的变量

“返回函数”?我看不出在哪里返回函数
put
返回空字符串。使用
return
返回一个值。我最近在使用
set m[return-level 0“这是返回值”时回答了“捕获stdout”