Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在tcl8.4.x中合并两个列表_Tcl - Fatal编程技术网

如何在tcl8.4.x中合并两个列表

如何在tcl8.4.x中合并两个列表,tcl,Tcl,我有如下列表作为某个函数的输出 puts $m {{bi 1/7 1/8}} {{uni 1/6}} 我需要将上述内容合并为{{bi1/71/8}{uni1/6}}单个列表。我不能使用concat,因为我的是8.4.x。请提供帮助我不太确定您希望列表连接的深度(请注意,concat实际上比Tcl7.0早,所以您当然有了它!),但下面是如何使用为8.4编写的代码去除列表的一个级别: proc concat_one_level {input_list} { set accum_list

我有如下列表作为某个函数的输出

puts $m 
{{bi 1/7 1/8}} {{uni 1/6}}

我需要将上述内容合并为
{{bi1/71/8}{uni1/6}}
单个列表。我不能使用concat,因为我的是8.4.x。请提供帮助

我不太确定您希望列表连接的深度(请注意,
concat
实际上比Tcl7.0早,所以您当然有了它!),但下面是如何使用为8.4编写的代码去除列表的一个级别:

proc concat_one_level {input_list} {
    set accum_list {}
    foreach item $input_list {
        eval [linsert $item 0 lappend accum_list]
        # From 8.5 onwards, we'd use this instead:
        #    lappend accum_list {*}$item
    }
    return $accum_list
}
以交互方式测试它(在8.5中;我不再安装8.4):

如果您可以安装,那么
struct::list
包声称仍然支持这样一个古老版本的tcl,并且有一个命令可以返回您想要的列表

示例
tclsh
repl会话:

% package require struct::list
1.8.3
% set m {{{bi 1/7 1/8}} {{uni 1/6}}}
{{bi 1/7 1/8}} {{uni 1/6}}
% ::struct::list flatten $m
{bi 1/7 1/8} {uni 1/6}
% ::struct::list flatten -full $m
bi 1/7 1/8 uni 1/6               

以下其中一项可能满足您的需要:

% puts $m
{{bi 1/7 1/8}} {{uni 1/6}}
% puts [list [join $m]]
{{bi 1/7 1/8} {uni 1/6}}
% puts [llength [list [join $m]]]
1
% 

你知道8.4不受支持吗?谢谢Donal..太棒了!!
% puts $m
{{bi 1/7 1/8}} {{uni 1/6}}
% puts [list [join $m]]
{{bi 1/7 1/8} {uni 1/6}}
% puts [llength [list [join $m]]]
1
% 
% puts $m
{{bi 1/7 1/8}} {{uni 1/6}}
% puts [join $m]
{bi 1/7 1/8} {uni 1/6}
% puts [llength [join $m]]
2
%