arrays - 在 tcl 中打印动态数组的内容
问题描述
我正在尝试从一个文件创建 n 个数组。当我尝试专门通过打印数组的值时,数组正在正确创建$array_name(PAD)
,我得到了正确的预期值。现在的问题是,当我尝试使用变量打印相同的值时,我没有得到该值。
例如:
set f "BC1201_MP_PM"
puts ${f}(PAD)
输出应该是 的内容BC1201_MP_PM(PAD)
,但输出是“ BC1201_MP_PM(PAD)
”。任何人都可以请帮忙。
提前致谢!乌特卡什
解决方案
有几种方法可以做到这一点,有些在某些情况下会更好。
在没有任何上下文的情况下,我想说最简单的方法是使用set
Shawn 在评论中建议的字典:
puts [set ${f}(PAD)]
# OR
dict set mydata BC1201_MP_PM PUB foo
puts [dict get $mydata $f PUB]
如果在这种情况下您需要打印所有数组的内容,那么您不妨使用带有以下内容的循环array get
:
foreach {k v} [array get $f] {
puts "The value for $k is $v"
}
在 aproc
中,您可以使用upvar
数组名称并将其传递给proc
类似的名称:
proc foo {arrayName} {
upvar $arrayName localArray
puts $localArray(PAD)
}
推荐阅读
- javascript - 在 Javascript 中转换对象格式
- r - 将 dateRangeInput 恢复为空
- java - 如何将 String 转换为从 sqlite 获取的 Uri 并在 ImageView 中设置?
- python - 如何从视觉采集卡访问数据到 opencv?
- excel - 将表单 DB 复制到 Excel 时出现 Excel 日期格式问题
- ember.js - Ember 数据:何时使用 findAll() 而不是 query()?
- django - 如何修复 Django:没有返回 HttpResponse 对象。它返回 None 而不是?
- angular - 使用“ng generate library”时,什么是 Angular“Library”?
- asp.net - Qlikview 身份验证请求被阻止,因为它是一个跨域请求
- django - 编辑现有表单的表单不保存并重定向到错误。姜戈