A-A+

TCL中的列表创建命令list、concat和 lrepeat

2019年12月24日 脚本 阅读 2,177 views 次

Tcl提供了三个列表创建命令:list、 concat和lrepeat。每一个命令都接受任意多个参数,返回结果为一个列表。它们的不同之处在于把参数组成列表的方式。

list命令把它的参数加入列表,即每个参数作为列表的一个独立元素,例如:

list a b "c d e  " "  f {g h}"

返回

a b {c d e  } {  f {g h}}

list命令总是会产生一个适当的列表结构,无论它的参数的结构是什么样的(它会自动添加必要的括号或反斜线), lindex命令总是可以从由 list命令生成的列表中取得原始元素。传给list的参数本身不必是形式完整的列表,因此如果不知道元素的值是什么,使用list命令创建列表是安全的方法。

命令concat接受任意多个列表作为参数,把参数列表中的所有元素串接为一个大的列表。如果某个输入列表的某个元素是嵌套的列表,这个元素会保持为嵌套的列表。同样是上面的例子,如果使用concat:

concat a b "c d e  " "  f {g h}"

将得到如下输出:

a b c d e f {g h}

concat需要它的参数有适当的列表结构,如果某个参数不是形式完整的列表,那么这 个命令给出的结果也可能不具备完整的列表形式。事实上, concat做的工作就是把它的参数字符串开头和结尾的空白裁掉,然后把各个元素以空格隔开,串接起来形成一个大的列表。concat完成的任务可以用双引号来完成,如:

set x {a b c}

set y {d e}

set z [concat $x $y]

输出为:

a b c d e

set z "$x $y"

输出同样是

a b c d e

lrepeat命令重复一个元素集合来创建列表,集合中各个元素作为单独参数给出,而第一个参数是指定的重复次数,例如:

lrepeat 3 a b c

→ a b c a b c a b c

lrepeat 3 [lrepeat 2 a] b c

→ {a a} b c {a a} b c {a a} b c

个人公众号“数字化设计CAX联盟”,欢迎关注,共同交流
标签:
为您推荐:

给我留言

© 坐倚北风 版权所有 严禁镜像复制 苏ICP备15034888号. 基于 Ality 主题定制 AliCMS
联系邮箱:leanwind@163.con,微信公众号:数字化设计CAX联盟

用户登录

分享到: