我认为你应该做的是硬着头皮改变电话。毕竟,这是一个相当简单的搜索和替换。与使用任何其他解决方案相比,该代码将更加理智。
check_file_exists name
或者,您可以将另一个参数添加到参数列表并使用它来传递名称,使第一个参数成为虚拟参数。
check_file_exists $name name
或者,如果您不使用返回值,则可以返回新值并将其分配回:
set name [check_file_exists $name]
或者,您可以将新值分配给theValue
过程内的全局变量(例如 ),然后将其分配回去:
check_file_exists $name
# don't need this if you're in global scope
global theValue
set name $theValue
或者,您可以将名称分配给全局变量(例如theName
)并在过程内部访问它:过程将能够name
直接更新。
# don't need this if you're in global scope
global theName
set theName name
check_file_exists $name
(此 fi 使用 有一些变化upvar
。)
没有一个替代方案是漂亮的,并且所有替代方案仍然需要您在调用时进行更改(除了最后一个,如果您只使用一个变量作为该值)。如果您坚持不这样做,总有 Donal 的info frame
解决方案,它只需要更改程序本身。
如果您需要有关任何这些替代方案的程序代码的帮助,请告诉我。