标签: upvar

upvar命令如何在TCL中工作?

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

proc tamp {name1 name2} {
    upvar $name1 Ronalod
    upvar $name2 Dom 
    set $Dom "Dom"
}
Run Code Online (Sandbox Code Playgroud)

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

tcl upvar

12
推荐指数
1
解决办法
2万
查看次数

TCL中upvar 0和upvar 1之间的差异

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

tcl upvar

5
推荐指数
2
解决办法
1011
查看次数

TCL - 返回变量vs upvar并修改

想从TCL专业人士那里获得最佳实践的建议.

假设您要使用proc构建包含特定数据的列表.现在哪种方式最好?

proc processList { myList } {
   upvar $myList list_
    #append necessary data into list_
}

proc returnList {} {
    set list_ {} 
    #append necessary data into list_
    return $list_
}

set list1 {}
processList list1

set list2 [returnList ]
Run Code Online (Sandbox Code Playgroud)

推荐哪种做法?

编辑:对不起,我无法理解回答这个问题的人的共识(和解释).

tcl upvar proc-object

3
推荐指数
1
解决办法
3394
查看次数

错误:无法读取"n":tcl中没有此类变量

proc rep {name} {
    upvar $name n 
    puts "nm is $n"
}
Run Code Online (Sandbox Code Playgroud)

在上面的过程中,' name'是一个传递给名为' rep' 的过程的参数.当我运行这个程序时,我得到了" error : Can't read "n" : no such variable".任何人都可以告诉我这个错误的可能原因是什么.

variables tcl upvar

3
推荐指数
1
解决办法
9518
查看次数

upvar的目的是什么?

在我目前正在处理的TCL代码中,每个过程中的参数都被upvar赋予局部变量,然后使用.像这样的东西:

proc configure_XXXX { params_name_abc params_name_xyz} {
    upvar $params_name_abc abc
    upvar $params_name_xyz xyz
}
Run Code Online (Sandbox Code Playgroud)

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

tcl upvar

3
推荐指数
1
解决办法
603
查看次数

TCL命名空间和堆栈帧之间有什么区别?

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

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

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

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

callstack namespaces tcl uplevel upvar

2
推荐指数
1
解决办法
446
查看次数

标签 统计

tcl ×6

upvar ×6

callstack ×1

namespaces ×1

proc-object ×1

uplevel ×1

variables ×1