gpt4 book ai didi

tcl - 将数组传递给 tcl 中的函数。只有upvar吗?

转载 作者:行者123 更新时间:2023-12-02 01:02:56 27 4
gpt4 key购买 nike

据我了解,在 tcl 中,如果要将命名数组传递给函数,则必须通过被调用者体内的 upvar 命令访问调用者的上层作用域。这是在 tcl 中传递数组的唯一方法吗?

最佳答案

正如 Michael 所指出的,有多种方法,还有一个讨论它的 wiki 页面。只是为了在这里获得一些信息,一些选项是:

作者:Upvar

proc by_upvar {&arrName} {
upvar 1 ${&arrName} arr
puts arr(mykey)
set arr(myotherkey) 2
}
set myarr(mykey) 1
by_upvar myarr
info exists myarr(myotherkey) => true
  • 导致调用者看到数组的更改

通过数组获取/设置

proc by_getset {agv} {
array set arr $agv
puts arr(mykey)
set arr(myotherkey) 2
return [array get arr]
}
set myarr(mykey) 1
array set mynewarr [by_upvar myarr]
info exists myarr(myotherkey) => false
info exists mynewarr(myotherkey) => true
  • 导致调用者看到数组的更改
  • 可以使用类似的机制返回数组

关于tcl - 将数组传递给 tcl 中的函数。只有upvar吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3513266/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com