【发布时间】:2017-11-21 12:20:25
【问题描述】:
这是一个普遍的问题。假设 TCL 8.6,假设我有一个相当短的程序。我有 2 种方法可以返回感兴趣的值:
1. 使用一些标准做法 if/else 代码,存储在变量中,并返回变量的值。例如:
proc me { gop goo } {
if { [ lomsa $gop ] {
set ret [ foo $goo $gop ]
} else {
set ret [ bar $gop $goo ]
}
return $ret
}
2。使用三元参数,基本上,程序没有添加私有变量(即只使用参数)。三元表达式的输出是返回值。例如:
proc me { gop goo } {
expr { [ lomsa $gop ] ? [ foo $goo $gop ] : [ bar $gop $goo ] }
}
我团队的一些成员认为可读性在第 1 项中稍好一些。
我无法在我的 TCL 设置中访问伪代码引擎(它是来自供应商的 shell),但我认为代码的差异及其性能会是,但如果有的话,也只是轻微的。即,该过程需要将返回的值存储在某处。为它注册一个特定变量的成本是多少,而不是将其保留为返回值?
这个问题可以扩展,例如,对于 switch 语句。同样的规则适用。 switch 语句可以存储在变量中,然后在 switch 之后返回变量的值,或者 switch 语句将只返回值,而不将其存储在变量中。此外,在它的返回部分之前可能有大量代码。上面列出的过程就是他们所说的“便利过程”
您可以假设代码的性能非常重要。
【问题讨论】:
标签: variables return tcl store ternary