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

Raj*_*war 3 tcl

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

% set m [return "This is returned value"]
This is returned value
% puts $m
can't read "m": no such variable
Run Code Online (Sandbox Code Playgroud)

有什么建议我可能在这里做错了吗?我也试过这样的事情

% set m [puts "Test"]
Test
% puts $m
...
Run Code Online (Sandbox Code Playgroud)

m 的输出是空白的,这是为什么?

更新 :

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

Din*_*esh 5

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

proc value { } {
   return rajesh
}

set result [value]
Run Code Online (Sandbox Code Playgroud)

puts 命令不会返回任何值,如果将其分配给变量,它将是空字符串。

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

set m [return "This is returned value"]

由于return,代码将立即返回。它无处可去。任何低于此的进一步代码根本不会运行。这就是为什么它失败了 can't read "m": no such variable