我想在100个数组中存储100个节点的详细信息。 例如,
中
node 1
的邻居应存储在array1
在此,对于每个数组,名称应更改为array1
,array2
,array3
,...,array100
我需要使用for
循环来连接数组和(1,2,3,...,100)。
我该怎么做?
答案 0 :(得分:5)
不完全确定你想要什么,但二维数组听起来像是要走的路
set a(1,1) neighbourof1_1;
set a(1,2) neighbourof1_2;
set a(2,1) neighbourof2_1;
...
...
set a(100,1) neighbourof100_1;
答案 1 :(得分:1)
通常建议使用2D数组(实际上只是复合元素名称),如下所示:
foreach x $listOf1to100 {
foreach y $listOf1to100 {
set ary($x,$y) "blah blah"
}
}
但是,如果您真的想要创建这些名称,那么您可以通过多种方式进行创建。一个是这样的:
foreach x $listOf1to100 {
set ary${x}(...) "blah blah"
}
但那很难看。当你来阅读阵列时,它甚至更加丑陋!更好的选择是:
foreach x $listOf1to100 {
upvar 0 array$x a
set a(...) "blah blah"
}
请注意,如果您真的正在使用2D紧凑数字索引,那么您可能更好地使用嵌套列表来构建矩阵:
# Create
set matrix [lrepeat 100 [lrepeat 100 "blah blah"]]
# Lookup
set value [lindex $matrix $x $y]
# Update
lset matrix $x $y $value