TCL中的问题
set a "a b c d"和set a {a b c d}有什么区别吗?还是说一个是string型的,另一个是list型的? 是一样的。tcl没有类型,可以说都是字符串,也都是list。 tcl只有一种数据类型,那就是string型.
再问
那上述两种赋值方式最后有什么不同的作用吗?接上
就是在用的时候 是不是里面有转义字符是不一样呀。。。。。 用双引号来集群参数的目的在于使用有空白的参数。例如:set a "this string contains whitespace"
如果一个参数一双引号来开始,该参数会一直到下一个双引号才结束。其中可以有换行符和分号。
用花扩括号来集群参数与用双引号来集群参数的区别在于:用花扩括号来集群参数可以嵌套。但是set其中的三种子替换不被执行。
分别是: 1.用$符进行变量替换
2用方括号进行命令子替换
3.转移符替换(转移符时间不可打印字符或由它数意义的字符插入进来。这一概念与C语言中的一样。)
例如:
set a {xyz a {b c d}}//set收到俩个参数 a 'xyz a {b
//c d}'
eval {
set a 22
set b 33
}//eval收到一个参数 'set a 22\nset b 33' set a "a b c d" 和set a { a b c d}是一样的,都是定义
我个人觉得区别就在于这两个值的输出是怎样的, ""与{}的区别了,关键看puts输出是什么,
""与{}的区别:
""中的内容会区分置换的命令,比如:$,[]和\.
{}中的全部内容都显示出来
建议楼主可以试一下,好不好关键看疗效sdlkfj3
页:
[1]