我有一个返回字符串的函数,但是我无法将该值存储到变量中。我试过这样做
% 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 的输出是空白的,这是为什么?
更新 :
在研究了这个问题之后。似乎我有一个无法改变的方法。此方法将输出打印到屏幕上。我想要做的是在变量中捕获该输出。
如果你想从一个函数返回值,它应该是这样的
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