tcl:如何使用变量的值创建新变量

2024-02-13

这是我正在尝试做的一个例子。

set t SNS
set ${t}_top  [commands that return value]

想要获取存储在 ${t}_top 的信息

puts “${t}_top”
 SNS_top  (really want the data stored there?)

以为是: ${{$t}_top} ,也许那是 perl,但 {} 内的 {} 不起作用。


Tcl 真正有趣的事情之一是您可以动态创建变量名称,就像您在发布的问题中所做的那样。然而,这使得编写起来很棘手,并且使代码变得比必要的更难理解。

与其试图弄清楚如何执行与 ${{$t}_top} 相同的操作,可以说最好完全避免这个问题。您可以通过使用关联数组来做到这一点。

例如,代替这个:

set t SNS
set ${t}_top  [commands that return value]
...
puts [set ${t}_top]

Do this:

set t SNS
set top($t) [commands that return value]
...
puts $top($t)

大多数人都认为后一个例子更具可读性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

tcl:如何使用变量的值创建新变量 的相关文章

  • 在 TCL 中使用多个参数启动程序 (vcom) 时出现问题

    我正在尝试使用额外选项从 TCL 脚本启动程序 vcom set compilationArgs quiet 93 vcom compilationArgs work work polar2rect sc corproc vhd 但是当我运
  • Tcl 扩展:扩展的 ClientData 的生命周期

    重要的本机扩展将需要每个解释器的数据 动态分配的结构 我目前正在使用Tcl SetAssocData 有一个对应的密钥 扩展名和适当的删除例程 以防止此内存泄漏 然而 Tcl PkgProvideEx 也允许记录这样的 信息 该信息可以通过
  • TCL subst 或 eval 命令在我的情况下不起作用..

    subst or eval command is not working in my case proc sum a b return expr a b set a 1 1 set b 2 2 sum a b 3 sum a b can t
  • 如何将 put 的输出作为输入提供给过程?

    我有一个将列表打印为格式化表格的过程 它有像 print table temp 这样的用例 我如何给出不同过程的输出 其中我使用 puts 命令打印输出作为该过程 print table 的输入 set list1 abc 1 defg 2
  • Rstudio tcltk 包的特定问题

    我正在尝试编译一个提示用户输入的交互式代码 我将 tcltk 包用于各种对话框 一切似乎都工作正常 直到今天它停止工作 应该注意的是 a 我没有在配置方面进行任何更改 b 它只是在 RStudio 中停止工作 但在 R 中仍然可以工作 假设
  • 如何列出 TCL 实例中的所有命名空间?

    如何列出 tclsh 实例中加载的所有名称空间 Chenz 尝试从 TCLer 运行这个过程Wiki http wiki tcl tk 1489 proc listns parentns set result list foreach ns
  • TCL - 按任意数量的空格将字符串拆分为列表

    假设我有一个像这样的字符串 set str AAA B C DFG 142 56 现在我想得到一个列表 如下所示 AAA B C DFG 142 56 为此 我想使用 split 函数 但在这种情况下我会得到一些额外的空列表 我怎样才能得到
  • 循环提示输入另一个密码时出现问题

    我需要一些关于 EXPECT 脚本的帮助 我正在尝试在访问大量主机之前自动登录 并在用户错误输入密码时进行处理 我首先获取用户名和密码 然后针对特定主机对其进行验证 如果密码无效 我想循环并再次询问用户名和密码 我正在尝试这个 省略前面几行
  • 如何用C++扩展TCL?

    我可以编写可编译并用于扩展 TCL 的 C 代码 我不是指调用可执行文件 吗 我可以描述一些类 函数并通过调用已编译的 so 或 a 文件 C 代码在我的 TCl 代码中使用它们吗 如果是 请示意性地向我解释一下它是如何完成的 http c
  • 如何使用tcl中的puts更改文本颜色

    我想通过使用 tcl 中的 put 命令来更改控制台中显示的文本颜色以简化调试 我看到很多文章是 abt tk 而不是 tcl 仅供参考 我在 Windows 7 上使用 Active tcl 我尝试过其他人提供的以下代码 http www
  • tkinter - wm 协议不处理 WM_HELP 消息

    tkinter 只处理已知协议吗 如果是这样 那对我来说似乎没什么用 如果不是 我不确定为什么这段代码在微软下对我有用 import tkinter as tk def lol print hi root tk Tk menu tk Men
  • 如何捕捉Tk中的最大化信号?

    您可以通过以下方式将命令与窗口的 X 按钮绑定 wm protocol windowPath WM DELETE WINDOW command 如何对窗口的最大化按钮执行相同的操作 X11 中也没有标准协议ICCCM套 http tronc
  • Tcl + 检查文件存在

    我正在尝试检查 Tcl 中是否存在文件 但我似乎无法得到真实的结果 尽管我知道它的存在 while true if file exists file name 1 exp send copy file txt destination r p
  • 打印大型 TCL 项目的源层次结构

    因此 我正在处理一个大型 TCL 项目 并且认为构建一个树状视图来显示文件在项目中的来源方式会很酷 我修改了源命令以执行以下操作 rename source real source proc source args set file han
  • Tcl 脚本中错误的静态检测

    我已经开发了一些代码 并且在 Linux 机器上遇到了 Tcl 解释器错误标记的问题 usr bin tclsh if 1 puts abc1 elseif puts abc2 上面的代码没有标记错误 elseif 条件 直到进入elsei
  • 如何让proc更有效?

    有一个顶点集合 x1 y1 x2 y2 xn yn 我想改变这些坐标的中心 所以我尝试 proc changeCenter vertices X Y set myList list foreach element vertices lapp
  • (Tcl/Expect) 退出后清屏

    我想在退出我的 半 交互式期望脚本后清除屏幕 在本地计算机上 我可以在脚本中做到这一点吗 这是我尝试过的 但失败了 usr bin expect f set env TERM vt100 spawn ssh Y username domai
  • 在退出脚本之前等待后台进程完成

    在退出脚本 TCL Bash 之前 如何确保所有后台进程已完成执行 我正在考虑将所有后台进程 pid 写入 pid 文件 然后最后 pgrep pidfile 以查看在退出之前是否有任何进程仍在运行 有一些更简单的方法可以做到这一点吗 TC
  • TCL 中的 if 语句

    我对以下代码的 tcl 中的 if 语句有疑问 if number 1 name hello number 0 name yes do something here 上面的代码是有效的 但是如果我这样写 if number 1 name h
  • Python tcl 未正确安装

    我刚刚为 python 安装了graphics py 但是当我尝试运行以下代码时 from graphics import def main win GraphWin My Circle 100 100 c Circle Point 50

随机推荐

  • 找到沿两个平面相交的线

    我试图在 3D 中绘制由两个平面相交形成的线 但我无法理解数学 这已被解释过here http mathinsight org intersecting planes examples and here http mathworld wol
  • 如何使用 Espresso 点击 Android 图库

    我们目前正在使用 Espresso 测试一个 Android 应用程序 我们要测试的功能之一是从本地图片库中选择图片 图像 我们可以一路调出图库视图 但无法在结果窗口中从 最近 下载 图库 中进行选择 下面包含了我们如何取得如此进展的一个片
  • Watir Webdriver 计算 UL 列表中的项目数量

    我进行了一些搜索 但无法找到合适的答案 基本上我有一个长度不同的无序列表 我想遍历列表 做一些其他事情 然后返回并选择列表中的下一个项目 当我定义循环应该迭代的次数时 我可以很好地做到这一点 因为我知道列表中的项目数量 但是我不想为每个测试
  • python 3,尝试从多个 HID 输入读取,Raspberry Pi

    我有一个条形码扫描仪连接到我的 RasPi 没有任何 tty 这意味着没有显示器的无头 换句话说 数字输入的键盘记录器 该扫描仪可读取 GTIN 或 EAN 等数字条形码 它有效 脚本在启动时由 sh 启动 我使用的脚本如下所示 impor
  • 合并多个 BatchEncoding 或从 BatchEncoding 对象列表创建张量流数据集

    在标记标记任务中 我使用转换器标记生成器 它输出 BatchEncoding 类的对象 我分别对每个文本进行标记 因为我需要从文本中提取标签并在标记后重新排列它们 由于子标记 但是 我找不到一种方法可以从 BatchEncoding 对象列
  • 如何通知其他应用程序我的应用程序是 Windows 桌面的一部分?

    我想在 C 中为 Windows 创建一个 工具栏 并希望将其放置在 Windows 桌面的顶部空间 我希望其他 Windows 程序无法覆盖我的应用程序 我还希望其他应用程序将我的窗口视为桌面的一部分 以便当它们最大化时 您仍然可以看到我
  • Matlab调试:跳过下一行而不执行

    问题 问题的完整描述如下 有人对如何欺骗 Matlab 跳过一行或多行代码有建议吗 mex java 重写一些内部Matlab功能 有谁知道在哪里db 代码文件可能位于 如果存在 Matlab 中有几个函数可以在调试 运行程序时进行流量控制
  • 将所有提交导出到 ZIP 文件或目录中

    如何将所有提交导出到 ZIP 文件 包含全部文件 不仅仅是补丁 差异 myproject commit1 67d91ab zip myproject commit2 9283acd zip myproject commit3 c57daa6
  • 子集参数在 pandas.io.formats.style.Styler.format 中起什么作用?

    的公共文档pandas io formats style Styler format https pandas pydata org pandas docs stable reference api pandas io formats st
  • 实际上撤消 git stash pop

    这个问题 https stackoverflow com questions 20038056 undo git stash pop有相同的标题 但它是NOT同样的问题 这个问题实际上是在问 丢弃 git stash pop 的结果 这个问
  • 互联网是否需要身份验证才能实际连接才能下载?

    我的应用程序需要使用互联网连接从链接下载一些文件 我有一个使用代理并需要身份验证的互联网连接 不知何故 当我尝试连接到互联网时 它从不要求进行此身份验证 因此无法下载文件 我想问的是 有什么方法可以检测用户的互联网连接是否需要身份验证才能从
  • 如何启用枚举继承

    我正在编写一个库 其中有一组预定义的枚举值 比方说 我的枚举如下所示 public enum EnumClass FIRST first SECOND second THIRD third private String httpMethod
  • urlencode 形式的泽西乔达时间 ISO 8601 参数

    我正在使用 Jersey 1 17 1 并定义了接受 application x www form urlencoded 的 REST 服务 我想接受 ISO 8601 格式的参数 b 并让 Jersey 将其映射到 Joda DateTi
  • Iphone 中的多语言应用

    如何在应用程序中更改应用程序的默认语言 我正在尝试将应用程序语言更改为阿拉伯语 但我不知道如何完成此操作 有一种方法 首先创建一个不同的文件夹 命名为ar lproj并把localizable String 希望以下示例代码对您有所帮助 您
  • 如何删除字符串第一次出现之前和最后一次出现之后的所有行?

    猫抢 txt My Dashboard Fnfjfjf random test 00 50 1 01 56 My Notes No data found Change Language English Submit Estimation o
  • 为什么 @DisplayName 在 JUnit 5 中不能为我工作?

    出于某种原因 我真的很难让显示名称在带有 Kotlin 的 JUnit 5 中得到真正的尊重 这是我出于示例目的创建的测试文件 import org assertj core api Assertions import org junit
  • jQuery 添加一个类 - 我尝试过的所有方法都会在单击时删除该类

    我正在使用一个 3D 旋转按钮 其中每个面都有不同的短语 但两者都是指向同一 URL 的链接 我最初使用普通的旧 css hover 旋转立方体按钮 但我注意到当您单击该按钮时它会重置 仅当鼠标不再位于按钮上时 它才应旋转回起始位置 我创建
  • uiwebkit 错误 101

    我有一个搜索框 它接受希伯来语和英语的关键字 并在维基百科中搜索相应的关键字 如果我输入英语 它运行良好 但当我输入希伯来语时 它会显示此错误 当我输入希伯来语关键字 url 时看起来像 u05db u05db u05db u05db 当我
  • 在 WPF 中的数据绑定组合框中禁用分隔符选择

    我有一个数据绑定的组合框 在此列表中 我需要一个分隔符 由于这是数据绑定 我做了一些非常类似的事情这个帖子 http www japf fr 2008 12 how insert separator in a databound combo
  • tcl:如何使用变量的值创建新变量

    这是我正在尝试做的一个例子 set t SNS set t top commands that return value 想要获取存储在 t top 的信息 puts t top SNS top really want the data s