gpt4 book ai didi

tcl - 无法理解 TCL 中的上级命令

转载 作者:行者123 更新时间:2023-12-04 13:52:58 29 4
gpt4 key购买 nike

我在理解 TCL 中 uplevel 的使用时遇到了一些问题。我正在阅读 Brent Welch 在 TCL 和 Tk 中的实用编程,并且有一个我无法理解的 uplevel 示例。这里是:

proc lassign {valueList args} {
if {[llength $args] == 0} {
error "wrong # args:lassign list varname ?varname...?"
}
if {[llength $valueList] == 0} {
#Ensure one trip through the foreach loop
set valueList [List {}]
}
uplevel 1 [list foreach $args $valueList {break}]
return [lrange $valueList [llength $args] end]
}

有人可以向我解释一下吗?书中的解释对我帮助不够:(

最佳答案

uplevel command 在当前过程之外的另一个范围内执行命令(或实际上是脚本)。特别是,在这种情况下,它是 uplevel 1这意味着“在调用者中执行”。 (您也可以使用 uplevel #0 在全局范围内执行,或者也可以在其他地方执行,例如使用 uplevel 2 的调用者的调用者,但这真的很少见。)

解释该行的其余部分: list 的使用这里是一种构造无替换命令的方法,它由四个字组成,foreach ,内容args变量,valueList的内容变量,和 break (实际上并不需要放在大括号中)。这将从 valueList 的前面分配一个值到 args 中列出的每个变量,然后停止,它会在调用者的上下文中这样做。

总体而言,该程序的工作方式与内置 lassign 相同。在 8.5 中(假设一个非空的输入列表和变量列表),除了由于作用域和类似事物之间交换的复杂性而变慢。

关于tcl - 无法理解 TCL 中的上级命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11533962/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com