0

我是新来的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]

以上确实会返回你好。但它与7?

为什么7即使我没有 return 语句,程序仍然返回 a?为什么当我提供返回语句时它会覆盖此行为?

4

1 回答 1

2

如果您没有显式return指定值,则将返回 proc 中执行的最后一条语句的值。这在描述部分末尾的https://www.tcl-lang.org/man/tcl8.6/TclCmd/proc.html中有记录。

于 2022-02-25T17:15:47.380 回答