关于 ::http::geturl 令牌的使用
About the ::http::geturl token usage
为了工作学习TCL,有一个问题找不到答案
它涉及::http::geturl
令牌的使用。
让我们考虑以下代码:
package require http
set url "some url"
set token [::http::geturl $url]
# the question is about the line below
upvar #0 $token state
set data $state(body)
如果我没记错的话,这里使用 upvar
只是创建一个别名 state
来引用 token
.
我想知道为什么这一行总是写在我能看到的任何代码中(即使在 TCL 文档中)?
更清楚一点,set data $state(body)
是否等同于set data $token(body)
?
如果是这样的话,为什么我们要写这个 upvar
如果它不是必需的(而且不是很有用但会使脚本更重)?
在我的笔记本电脑上,我暂时无法安装tclsh等任何东西,所以我无法通过自己的测试找到答案。
这就是我需要你帮助的原因。
感谢任何愿意回答我的人。
token
实际上包含一个字符串,类似于 ::http::1
(数字递增,您对 ::http::geturl
的调用越多),该字符串是数组的名称。
因此,当您执行 $token(body)
时,您是在告诉代码在数组 token
中查找键 body
的值,只是该数组不存在。如前所述,数组的实际名称是 ::http::1
。所以创建别名比使用 lindex [array get $token body] 1
.
这样的东西更容易
为了工作学习TCL,有一个问题找不到答案
它涉及::http::geturl
令牌的使用。
让我们考虑以下代码:
package require http
set url "some url"
set token [::http::geturl $url]
# the question is about the line below
upvar #0 $token state
set data $state(body)
如果我没记错的话,这里使用 upvar
只是创建一个别名 state
来引用 token
.
我想知道为什么这一行总是写在我能看到的任何代码中(即使在 TCL 文档中)?
更清楚一点,set data $state(body)
是否等同于set data $token(body)
?
如果是这样的话,为什么我们要写这个 upvar
如果它不是必需的(而且不是很有用但会使脚本更重)?
在我的笔记本电脑上,我暂时无法安装tclsh等任何东西,所以我无法通过自己的测试找到答案。
这就是我需要你帮助的原因。
感谢任何愿意回答我的人。
token
实际上包含一个字符串,类似于 ::http::1
(数字递增,您对 ::http::geturl
的调用越多),该字符串是数组的名称。
因此,当您执行 $token(body)
时,您是在告诉代码在数组 token
中查找键 body
的值,只是该数组不存在。如前所述,数组的实际名称是 ::http::1
。所以创建别名比使用 lindex [array get $token body] 1
.