问题标签 [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.
tcl - TCL中upvar 0和upvar 1的区别
谁能让我知道TCLupvar 0
和upvar 1
TCL之间的区别,我们如何实时使用。请,如果有人举例解释,它会让我更清楚。
tcl - Tcl upvar 问题
我试图使用 upvar 修改变量(在向上的堆栈中),但变量的值被传递给过程而不是变量名。
我无法更改传递的内容,因为它已经在程序中广泛实施。
有没有办法以某种方式修改文件名?
此代码将打印文件的旧名称而不是新名称。
tcl - Tcl upvar 性能改进与直接传递
这与 Tcl 8.5 有关假设我有一本非常大的字典。从性能的角度来看(内存占用等),假设我不修改字典,upvar 是否应该在内存方面提供巨大的性能改进?我正在使用具有 TCL shell 的 EDA 工具,但供应商禁用了 TCL 内存命令。我知道 Tcl 可以在后台共享字符串以提高性能...同一个字典可以传递多个嵌套的 procs 调用。谢谢。
tcl - upvar 的作用是什么?
在我目前处理的 TCL 代码中,每个过程中的参数都被upvar
'ed 到一个局部变量,可以这么说,然后使用。像这样的东西:
从这里开始,abc和xyz将被用来做任何事情。我阅读了upvar TCL wiki,但无法理解其优势。我的意思是为什么我们不能只使用已收到的变量作为过程中的参数。有人可以详细说明吗?
namespaces - 预期的 TCL:upvar 与命名空间变量的性能
根据规范/实现,访问命名空间变量与 upvar 之间是否存在预期差异。我必须使用回调函数。我不能只传递一个论点。根据经验,upvar 获胜。但在所有合理的情况下,这是预期的吗?谢谢。
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?
- define a bunch of variables at the beginning of
bar.tcl
that I want to use in both procsbar1
andbar2,
and - call
bar1
andbar2
from within procs defined infoo.tcl
Here's my code in foo.tcl
:
And here's my code in bar.tcl
:
bash - 在 Bash 中分配给父上下文中的变量
我想写一个类似于read
内置的函数,我将变量名作为参数传递,函数将其结果返回到名为的变量中。
我试着这样做:
foo
但是,上面有一个问题:如果我使用第一个参数var
or调用,上面的内容就不起作用result
,因为这样赋值就变成了内部定义的局部变量,foo
而不是它的调用者。实际上,这泄漏了foo
.
如果我使用 nameref 代替 ( local -n
),则运行foo var
会产生一条警告消息,而foo result
不会向调用者返回任何内容,因为该result
变量是在函数中分配的。而且我不能只是将变量重命名为不会冲突的东西,因为我实际上打算在这里执行递归,因此变量将不可避免地与自身发生冲突。Namerefs 根本无法解决我的问题。
我也不能使用子shell,因为这样对全局变量的任何修改都会丢失。
有没有办法分配给调用者上下文中定义的动态命名变量?
(换句话说,我正在寻找 Tcl 的 bash 等价物upvar
。)
tcl - Tcl:通过所有级别搜索变量
我的问题的背景:我想编写一个错误程序,它会写出一条有助于识别错误情况的附加消息。我有一些代码部分提供了这些附加信息,而其他部分则没有。我的想法是:
- 将全局消息变量
message
设置为空字符串 message
在调用可能导致错误的过程之前创建一个本地消息变量- 在错误过程中:向下搜索变量的所有级别
message
并获取找到的第一个变量的值
我也可以设置一个全局message
变量并始终访问它,但是之后我必须重新设置它(以防止其他未设置的部分出现恼人的错误消息message
)。
我写了一个searchVar
程序:
这是一些测试代码:
这使
这给出了所需的行为: 的值message
是定义的最后一个(相对于调用顺序)。
我的问题是:是否有更紧凑或“规范”的解决方案searchVar
?还是对整个问题的更优雅的解决方案?
performance - Tcl upvar 和 uplevel 的性能
假设我有一个上一级的变量,我只想查询它的值。我有两个选择:
uplevel { set var_name }
或者:
upvar var_name
如果我只需要查询一次变量,而不是更改它,哪一个应该更快?
tcl - Tcl - 在被调用函数中追加或修改嵌套列表
我在父函数中有一个嵌套列表,我想在其中一个被调用函数中附加一些元素
在 myproc1 中,我想将一些元素附加到 mylist。我尝试了以下方法:
但它没有按预期工作。upvar 是用于此要求的正确构造吗?