02-Tcl输出、赋值与替换
2023-03-20 15:29:30 时间
2 Tcl输出、赋值与替换
2.1 puts
Tcl的输出命令是puts,将字符串标准输出channelled。语法中两个问号之间的参数为可选参数。
# 例1
puts hello
# 输出
hello
# 例2
puts -nonewline "hello hello"
# 输出
hello hello
- 如果输出一段有空格的文本,则要用双引号("")或花括号({})起来。
- -nonewwhile选项告诉puts不输出回车换行。
注意:双引号和花括号的作用是将多个词组织成一个变元,但是""和{}是由区别的。""在进行替换操作的时候,前者允许替换操作发生;{}会阻止替换。
2.2 set
set varName [value]
unset vaName
- set:变量定义和赋值命令,不必制定变量值得类型,因为变量值得类型只有一种--字符串。在为变量进行赋值的时候,会为变量开辟一段内存空间来存储变量值
- set VarName不跟变量的值,如果变量已经定义,则返回变量的值,效果和puts相同;变量不存在会返回错误信息。相当于查询的作用。
- unset与set的作用相反,它取消变量的定义,并释放变量所占的内存空间
- 通过前置的“$”符,可以引用变量的值(替换)。
set a Hello # 定义变量a并为其赋值
puts $a # a=Hello
set a "Test Tcl" # 重新给a赋值
set a # 输出Test Tcl
puts a # 输出字符a
set b $a # 定义变量b,并将a的值赋值给b b=Test Tcl
puts $b # b = Test Tcl
unset a # 释放变量
puts $a # 试图输出未定义的变量值,会进行输出
- puts $a由两步完成:首先用a的值替换$a,替换后的命令变为puts {Test Tcl},然后输出字符串。也就是说先替换后输出。
- 数组定义在后面进行介绍。
2.3 替换
2.3.1 $
$实现引用替换,用来引用参数值。
tcl在使用$进行引用替换的时候,只会进行一次解释,嵌套使用$$xxxx,只有一个起作用。
set foo oo
set dollar foo
set x $$dollar # x = $foo
set y {$foo} # y = $foo {}阻止替换
set z $x # z = $foo
- $$dollar,将$dollar用dollar的值foo进行替换,前面的$不起作用,作用字符输出。
2.3.2 []
方括号[]书写完整的命令替换,[]中的执行后,返回结果。
set b [set a 5] # set a 5命令输出的结果赋值给b b=5
puts b # b = 5
set c [expr 5*10] # 将乘式的结果赋值给c
puts c # c = 50
2.3.3 ""和{}
""和{}将多个单词阻止在一起组成一个参数,也是一种替换操作。一般在""内进行正常替换,在{}中的替换可能被阻止。当{}用于组织算数表达式、if条件和函数内执行体的代码块的时候,不会阻止替换。
set s hello
puts stdout "The length of"$s" is [string length $s]"
=>The length of hello is 5
# ""内再使用双引号的时候要使用转义字符。
# string length $s 计算字符串s的字符串长度
puts stdout {The length of $s is [string length $s]} # 替换操作被阻止
=>The length of $s is [string length $s]
set x 10
set y 20
set z [expr{$x + $y}]
=>30
if{$x == 10} {puts "x = $x"}
=>x=10
- expr表示进行数学运算,要用[]括起来
- 用{}来组织算数运算表达式,不阻止$替换操作
- 在条件语句中,用{}来界定条件体和执行体,不阻止内部的替换
2.3.4
反斜杠“”的作用是引用特殊字符或者续行。
应用特殊字符的操作是告诉TCl解释器需要使用一些特殊的字符,如$符或者完成特定功能比如
, ,.....,相当于转义字符的作用。
如果一条语句过长,可以使用“”,将一行语句分为多行进行书写。
set x 100
set y $x # y = 100
set z "$x" # z = $x $表示告诉tcl使用$符号
puts "he
llo" #
换行
=>he
llo
puts "a" # 振铃
set b [puts
$y]
注意:当用set命令为参数,赋值,并""用作续行符的时候,不要在反斜杠后面同一行上输入任何符号,包括空格和制表符。否则反斜杠()就起不到续行的功能,容易引起错误。
相关文章
- 金融服务领域的大数据:即时分析
- 影响大数据、机器学习和人工智能未来发展的8个因素
- 从0开始构建一个属于你自己的PHP框架
- 如何将Hadoop集成到工作流程中?这6个优秀实践必看
- SEO公司使用大数据优化其模型的5种方法
- 关于Web Workers你需要了解的七件事
- 深入理解HTTPS原理、过程与实践
- 增强分析:数据和分析的未来
- PHP协程实现过程详解
- AI专家:大数据知识图谱——实战经验总结
- 关于PHP的错误机制总结
- 利用数据分析量化协同过滤算法的两大常见难题
- 怎么做大数据工作流调度系统?大厂架构师一语点破!
- 2019大数据处理必备的十大工具,从Linux到架构师必修
- OpenCV中的KMeans算法介绍与应用
- 教大家如果搭建一套phpstorm+wamp+xdebug调试PHP的环境
- CentOS下三种PHP拓展安装方法
- Go语言HTTP Server源码分析
- Go语言HTTP Server源码分析
- 2017年4月编程语言排行榜:Hack首次进入前五十