问题标签 [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 回答
1567 浏览

tcl - TCL中upvar 0和upvar 1的区别

谁能让我知道TCLupvar 0upvar 1TCL之间的区别,我们如何实时使用。请,如果有人举例解释,它会让我更清楚。

0 投票
2 回答
224 浏览

tcl - Tcl upvar 问题

我试图使用 upvar 修改变量(在向上的堆栈中),但变量的值被传递给过程而不是变量名。

我无法更改传递的内容,因为它已经在程序中广泛实施。

有没有办法以某种方式修改文件名?

此代码将打印文件的旧名称而不是新名称。

0 投票
2 回答
244 浏览

tcl - Tcl upvar 性能改进与直接传递

这与 Tcl 8.5 有关假设我有一本非常大的字典。从性能的角度来看(内存占用等),假设我不修改字典,upvar 是否应该在内存方面提供巨大的性能改进?我正在使用具有 TCL shell 的 EDA 工具,但供应商禁用了 TCL 内存命令。我知道 Tcl 可以在后台共享字符串以提高性能...同一个字典可以传递多个嵌套的 procs 调用。谢谢。

0 投票
3 回答
1054 浏览

tcl - upvar 的作用是什么?

在我目前处理的 TCL 代码中,每个过程中的参数都被upvar'ed 到一个局部变量,可以这么说,然后使用。像这样的东西:

从这里开始,abcxyz将被用来做任何事情。我阅读了upvar TCL wiki,但无法理解其优势。我的意思是为什么我们不能只使用已收到的变量作为过程中的参数。有人可以详细说明吗?

0 投票
1 回答
188 浏览

namespaces - 预期的 TCL:upvar 与命名空间变量的性能

根据规范/实现,访问命名空间变量与 upvar 之间是否存在预期差异。我必须使用回调函数。我不能只传递一个论点。根据经验,upvar 获胜。但在所有合理的情况下,这是预期的吗?谢谢。

0 投票
1 回答
270 浏览

scope - Tcl/Tk: scope of variables for a function within a function

I'm getting lost on scoping variables in Tcl. I've got two procs I've written and stored in a file that I want to call in another script I'm writing. In my sourced file (which I'll call bar.tcl), I'm using upvar to define a bunch of variables at the beginning of my file that I plan to call within the procs I've defined within bar.tcl, which I'll call bar1 and bar2

I want to call the functions within bar.tcl from my code within foo.tcl. My functions work fine if I'm just interacting with bar.tcl in tclsh, but as soon as I call bar1 or bar2 from within a function in foo.tcl, I get an error can't read "alpha": no such variable

It seems I'm using upvar incorrectlys. Is this even the right tool for the job? What can I do so that I can achieve the following?

  1. define a bunch of variables at the beginning of bar.tcl that I want to use in both procs bar1 and bar2, and
  2. call bar1 and bar2 from within procs defined in foo.tcl

Here's my code in foo.tcl:

And here's my code in bar.tcl:

0 投票
1 回答
172 浏览

bash - 在 Bash 中分配给父上下文中的变量

我想写一个类似于read内置的函数,我将变量名作为参数传递,函数将其结果返回到名为的变量中。

我试着这样做:

foo但是,上面有一个问题:如果我使用第一个参数varor调用,上面的内容就不起作用result,因为这样赋值就变成了内部定义的局部变量,foo而不是它的调用者。实际上,这泄漏了foo.

如果我使用 nameref 代替 ( local -n),则运行foo var会产生一条警告消息,而foo result不会向调用者返回任何内容,因为该result变量是在函数中分配的。而且我不能只是将变量重命名为不会冲突的东西,因为我实际上打算在这里执行递归,因此变量将不可避免地与自身发生冲突。Namerefs 根本无法解决我的问题。

我也不能使用子shell,因为这样对全局变量的任何修改都会丢失。

有没有办法分配给调用者上下文中定义的动态命名变量?

(换句话说,我正在寻找 Tcl 的 bash 等价物upvar。)

0 投票
0 回答
42 浏览

tcl - Tcl:通过所有级别搜索变量

我的问题的背景:我想编写一个错误程序,它会写出一条有助于识别错误情况的附加消息。我有一些代码部分提供了这些附加信息,而其他部分则没有。我的想法是:

  • 将全局消息变量message设置为空字符串
  • message在调用可能导致错误的过程之前创建一个本地消息变量
  • 在错误过程中:向下搜索变量的所有级别message并获取找到的第一个变量的值

我也可以设置一个全局message变量并始终访问它,但是之后我必须重新设置它(以防止其他未设置的部分出现恼人的错误消息message)。

我写了一个searchVar程序:

这是一些测试代码:

这使

这给出了所需的行为: 的值message是定义的最后一个(相对于调用顺序)。

我的问题是:是否有更紧凑或“规范”的解决方案searchVar?还是对整个问题的更优雅的解决方案?

0 投票
2 回答
86 浏览

performance - Tcl upvar 和 uplevel 的性能

假设我有一个上一级的变量,我只想查询它的值。我有两个选择:
uplevel { set var_name }
或者:
upvar var_name
如果我只需要查询一次变量,而不是更改它,哪一个应该更快?

0 投票
1 回答
80 浏览

tcl - Tcl - 在被调用函数中追加或修改嵌套列表

我在父函数中有一个嵌套列表,我想在其中一个被调用函数中附加一些元素

在 myproc1 中,我想将一些元素附加到 mylist。我尝试了以下方法:

但它没有按预期工作。upvar 是用于此要求的正确构造吗?