tcl 中的过程:没有 return 语句,仍然得到 return 值?
Procedure in tcl: no return statement, still getting a return value?
我是 tcl
的新手,想对 return
语句在该语言中的工作方式有一些了解。以下面的代码为例:
proc add name {
set name [expr $name+2]
}
set y 5
puts [add $y]
我惊讶地发现这实际上将值 7
打印到我的终端。由于我的程序中没有包含 return
语句,所以我没有期望打印出任何内容。
当我包含 return 语句时,它似乎覆盖了这个奇怪的默认行为:
proc add name {
set name [expr $name+2]
return hello
}
set y 5
puts [add $y]
以上确实return你好。但它与 7
有什么关系?
为什么即使我没有 return 语句,程序仍然 return 一个 7
?为什么当我提供 return 语句时它会覆盖此行为?
如果您没有显式return
一个值,将返回在 proc 中执行的最后一条语句的值。这在描述部分末尾的 https://www.tcl-lang.org/man/tcl8.6/TclCmd/proc.html 中有记录。
我是 tcl
的新手,想对 return
语句在该语言中的工作方式有一些了解。以下面的代码为例:
proc add name {
set name [expr $name+2]
}
set y 5
puts [add $y]
我惊讶地发现这实际上将值 7
打印到我的终端。由于我的程序中没有包含 return
语句,所以我没有期望打印出任何内容。
当我包含 return 语句时,它似乎覆盖了这个奇怪的默认行为:
proc add name {
set name [expr $name+2]
return hello
}
set y 5
puts [add $y]
以上确实return你好。但它与 7
有什么关系?
为什么即使我没有 return 语句,程序仍然 return 一个 7
?为什么当我提供 return 语句时它会覆盖此行为?
如果您没有显式return
一个值,将返回在 proc 中执行的最后一条语句的值。这在描述部分末尾的 https://www.tcl-lang.org/man/tcl8.6/TclCmd/proc.html 中有记录。