问题标签 [upvar]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3656 浏览

tcl - TCL - 返回变量与 upvar 并修改

想听取 TCL 专业人士的建议以获得最佳实践。

假设您想使用 proc 构造一个包含特定数据的列表。现在哪个是最好的方法?

推荐哪种做法?

编辑:我很抱歉,但我无法理解回答这个问题的人的共识(和解释)。

0 投票
3 回答
435 浏览

tcl - 无法在 Tcl 中使用 upvar 将变量传递给过程

我需要一个能够从调用者的命名空间访问、读取和更改变量的过程。该变量称为_current_selection。我尝试以upvar几种不同的方式使用它,但没有任何效果。(我写了一个小的测试过程只是为了测试upvar机制)。这是我的尝试:


调用过程:

过程:


对于我的第二次尝试:

调用过程:

过程:


在所有尝试中,一旦它到达代码中的这个区域,它就会说can't read "curr_sel": no such variable

我究竟做错了什么?

编辑:

该函数的调用是通过以下bind命令进行的:

一开始我以为没关系。但也许确实如此。

0 投票
4 回答
25362 浏览

tcl - upvar 命令在 TCL 中是如何工作的?

我对 TCL 中的 upvar 命令有疑问。使用 upvar 命令,我们可以在其他过程中引用全局变量或局部变量。我看到了以下代码:

这个过程被称为tamp name1 name2,并且没有在它之外定义全局变量 name1、name2,这个 upvar 在这种情况下是如何工作的?

0 投票
2 回答
13245 浏览

variables - error : Can't read "n" : no such variable in tcl

In the above procedure, 'name' is a parameter which is passed to a procedure named 'rep'. When I run this program I got "error : Can't read "n" : no such variable". Could any one tell me what could be the possible cause for this error.

0 投票
1 回答
555 浏览

tcl - Tcl upvar 到另一个 proc 中的变量

我有两个 proc:从MAIN我调用另一个 proc Glob$Allforces是列表的列表。

我得到“ No such variable”作为我尝试的错误upvar。所以我尝试了:

然后我得到:“ upvar won't create namespace variable that refers to procedure variable

如何通过引用AllForcesMAINin访问?Glob

0 投票
1 回答
81 浏览

tcl - tcl proc 使用 upvar 导致历史(nextid)

我遇到了这个奇怪的问题。我正在使用 tcl 8.3

在我在 tcl shell 中定义这个过程之后

我不断得到

每次我点击换行符“Enter”之后,有人知道为什么会这样吗?

0 投票
1 回答
577 浏览

namespaces - TCL 中 namespace/uplevel/global 的使用

我有一个这样的脚本:

我希望 subProc1 和 subProc2 在 mainProc 中定义变量。我可以将它们作为参数传递,但这是很多参数,我想避免这种情况。

我尝试使用 upvar 命令,将这一行添加到我的 subProcs :

但是我有“没有这样的变量”错误消息,而且有这样的大行并不好

我刚刚阅读了有关命名空间的信息,但我并不真正了解如何使用它(另外我不确定这个概念,所以它真的适合我的用例吗?)

0 投票
1 回答
76 浏览

tcl - 在不知道其名称的情况下提升变量范围

我需要从source'd 文件中'upvar' 变量(我不知道他们的名字)

假设我有一个 TCL 文件,其中包含:

现在这个:

文件 t.tcl 不得更改。

我也无法了解t.tcl. 假设它作为env变量传递。如何v在顶层显示?

0 投票
1 回答
84 浏览

namespaces - how do I update a variable via a tk window by name

Consider the following situation:

Im trying to figure out how to (a) get a variable from the calling scope (b) have it available in all three procs and (c) writing any changes back into said variable.

(a) I would normally solve using 'upvar 1 $varName theVar' (b) I would normally solve with a namespace variable (c) As long as we only have one proc that would happen automaticly with (a) due to the fact that we would be working on a local alias of that variable

The problem is that upvar only works (at least as intended) in (1). I could use upvar in (1) and save/copy into a namespace variable, that would solve (a) and (b), but not (c).

I would be gratefull if someone could point me in the right direction here.

Also, as I'm relativly new to Tcl/Tk my concept might not be ideal, suggestions toward a better design are welcome too.

0 投票
1 回答
580 浏览

namespaces - TCL 命名空间和堆栈框架有什么区别?

Upvar 在不同的堆栈帧(有时称为调用堆栈不同的范围)中创建指向变量的链接。

Upvar 还用于为全局(或命名空间)变量2创建别名。但是命名空间只能由namespace eval命令创建。proc 命令创建一个新的堆栈帧。

命名空间和调用堆栈似乎是TCL 命名上下文可以更改的两种方式。Upvar 和 Uplevel 可以在命名空间和调用堆栈上工作。

我做对了吗?我还没有看到调用堆栈和命名空间之间的直接比较,因此我提出了问题。