Arrays 在tcl中添加数组元素

Arrays 在tcl中添加数组元素,arrays,tcl,addition,Arrays,Tcl,Addition,我最近开始在Tcl编程,我发现为我的问题开发代码很困难。 我必须从相同长度的用户那里获取两个数组元素的输入,然后找到两个数组元素的加法,并将其存储在第三个数组中。 e、 g.arr1包含[1 2 3 4],arr2包含[2 3 4 5]。所以我的第三个数组应该给我[3 5 7 9]作为输出。假设你说的是tcl列表而不是tcl数组,你可以这样做: set l1 {1 2 3 4} set l2 {2 3 4 5} foreach e1 $l1 e2 $l2 { lappend l3 [ex

我最近开始在Tcl编程,我发现为我的问题开发代码很困难。 我必须从相同长度的用户那里获取两个数组元素的输入,然后找到两个数组元素的加法,并将其存储在第三个数组中。
e、 g.arr1包含[1 2 3 4],arr2包含[2 3 4 5]。所以我的第三个数组应该给我[3 5 7 9]作为输出。

假设你说的是tcl列表而不是tcl数组,你可以这样做:

set l1 {1 2 3 4}
set l2 {2 3 4 5}
foreach e1 $l1 e2 $l2 {
    lappend l3 [expr "$e1 + $e2"]
}
这里的诀窍是,这个tcl可以

如果您需要一次获得一条线路:

gets stdin l1
gets stdin l2
foreach e1 $l1 e2 $l2 {
    lappend l3 [expr "$e1 + $e2"]
}

如果您有Tcl 8.6,则可以使用新的
lmap
命令:

set l1 {1 2 3 4}
set l2 {2 3 4 5}
set l3 [lmap x $l1 y $l2 {expr {$x + $y}}]

但如何从用户处接受两个数组..是否有一行命令用于此?不清楚您在问什么。你真的在问这个问题吗。你说的是从用户那里获取输入的什么方法?从命令行?从stdin?来自其他地方?@user3178631-查看我的编辑。我不认为有一种方法可以在一个命令中完成这一切,但如果需要,没有理由不使用分号并将这些命令全部放在一行:
getstdinl1;获取stdinl2;每个e1$l1 e2$l2{lappend l3[expr“$e1+$e2”]};放入$l3