TCL阵列替换

TCL阵列替换,tcl,Tcl,在TCL(运行v8.6.6)中,我想创建一个数组,用另一个变量的值替换数组的一个或多个值 如果我们是C,我会写 float a = 10; float b[4] = {1.0, 2.0, 3.0, 4.0}; b[2]=a; 如果我在标准输出上打印,我得到1.010.03.34.0 在TCL中,我从一个简单的例子开始。我写 set a 10.0 set b $a puts $b 我得到了10.0作为输出,但是如果我想在数组中做同样的事情,那么我写了 set a 10.0 set b {1.

在TCL(运行v8.6.6)中,我想创建一个数组,用另一个变量的值替换数组的一个或多个值

如果我们是C,我会写

float a = 10;
float b[4] = {1.0, 2.0, 3.0, 4.0};
b[2]=a;
如果我在标准输出上打印,我得到1.010.03.34.0

在TCL中,我从一个简单的例子开始。我写

set a 10.0
set b $a

puts $b
我得到了10.0作为输出,但是如果我想在数组中做同样的事情,那么我写了

set a 10.0
set b {1.0 $a 3.0 4.0}

puts $b
我期待着

1.0 10.0 3.0 4.0
但是我有

-0.5 $a 0.5 0.79
有什么想法吗


非常感谢

花括号
{}
防止替换,请尝试:

set b [list 1.0 $a 3.0 4.0]

花括号
{}
防止替换,请尝试:

set b [list 1.0 $a 3.0 4.0]
虽然您已经发现创建带有替换的列表是通过
list
命令完成的,但是下面介绍了如何对一个元素进行赋值,该元素相当于
b[2]=a来自C

lset b 2 $a
虽然您已经发现创建带有替换的列表是通过
list
命令完成的,但是下面介绍了如何对一个元素进行赋值,该元素相当于
b[2]=a来自C

lset b 2 $a

从零开始看C索引(就像Tcl一样);打印该数组应该给出
1.0 2.0 10.0 4.0
术语:TCL中的数组与awk中的数组一样,是一个关联数组/哈希表。您使用的是一个列表,它更像是一个C数组。您应该看到由tcl代码打印的是
1.0$a 3.0 4.0
。不过,你所说的C代码打印内容与应该看到的内容也不一样,因此,在这个问题中,你没有分享更多的内容。谢谢大家的评论!从零开始看C索引(就像Tcl一样);打印该数组应该给出
1.0 2.0 10.0 4.0
术语:TCL中的数组与awk中的数组一样,是一个关联数组/哈希表。您使用的是一个列表,它更像是一个C数组。您应该看到由tcl代码打印的是
1.0$a 3.0 4.0
。不过,你所说的C代码打印内容与应该看到的内容也不一样,因此,在这个问题中,你没有分享更多的内容。谢谢大家的评论!从技术上讲,这不是你所问问题的答案,但它确实表明了你可能一直在想什么。从技术上讲,这不是你所问问题的答案,但它确实表明了你可能一直在想什么。