tcl - TCL 中的全局数组
问题描述
我想知道如何在TCL中制作或创建一个全局数组,以便在Procedure
. 我的意思是,如果我有一个Procedure
并且我想获取数组值以在过程中使用它,我该怎么做?
解决方案
您可以使用global
来访问数组。例如
array set myArr {a 1 b 2 c 3}
proc foo {} {
global myArr
parray myArr
}
foo
#=> myArr(a) = 1
#=> myArr(b) = 2
#=> myArr(c) = 3
使用访问全局namespace
使用::
:
proc bar {} {
parray ::myArr
}
#=> ::myArr(a) = 1
#=> ::myArr(b) = 2
#=> ::myArr(c) = 3
您也可以使用upvar
and uplevel
,它们可能更容易理解,也可能不容易理解,具体取决于您使用 Tcl 的经验;它们要求您了解关卡(或堆栈帧)。基本上,全局命名空间处于 0 级或 #0 级,每次进入 aproc
时,都会深入 1 级。
推荐阅读
- lisp - 为什么圆心坐标(键 10)不相对于 DXF 数据中的原点?
- php - 数据在表格中时不显示
- flutter - 如何使用具有相同类名的两种反序列化技术
- javascript - 带有phaser3的cordova无法正常播放ios音乐,声音已静音
- uml - 如何在 uml 类图中表示多对多关系
- python - OpenCV 不接受 ndarray 到 TextDecectorCNN.detect()
- ruby-on-rails - 库文件中的 Sidekiq 调用方法
- reactjs - Gatsby、GraphQL 和 Apollo 缓存问题
- java - 如何强制 HttpURLConnection 请求等待完整响应?
- c++ - 如何将 Lambda 函数作为参数传递