tcl笔记

 

1.连续两个$,只解释一次

%set x $$dollar

=>$foo ;#只解释一次,将“ $dollar”用 dollar 的值( foo)代替,
           ;#命令等效为 set x {$foo},大括阻止替换。

 

2.方括号“ []”完成命令替换。用“ []”将一条命令括起来,命令执行完成后,返回结果。

% set b [set a 5] ;#set a 5 命令输出的结果赋给 b
=>5

3. ""和{}内的替换

   一般的原则是在" "内的替换正常进行,而在{}内的替换有可能会被阻止。

   对花括号内的替换操作可以概括为:如果花括号是用做替换操作,则它会阻止内部的嵌套替
   换,如例 2-3;如果花括号用做界限符,如过程定义时用做界限过程体时,不阻止替换操作,
   其他还有 if 条件语句、循环语句、 switch 语句和过程声明、数学表达式等。

=>The length of hello is 5
%puts stdout {The length of $s is [string length $s]}
=>The length of $s is [string length $s] ;#替换操作被阻止

% set z [expr {$x + $y}] ;#expr 表示进行数学运算,要用[]括起来
=>30 ;#用{}来组织算术表达式,不阻止$替换操作


% if { $x == 10} { puts “x=$x”}
=> x=10 ;#在条件语句中, {}用来界定条件体和执行体,不阻止内部替换

 

4.数学函数

abs(arg) 取绝对值

set a –10 ; #a=-10
set a [expr abs($a)]; # a=10

 

ceil(arg) 返回不小于 arg 值的整数值

 

double(arg) 转换双精度

 

floor(arg)

 

fmod 取余(结果为浮点型)

 

int(arg) 取整

rand() 取 0 到 1 之间的随机实数数(无输入参数)
set a [expr 10 * [expr rand()]];0 到 10 之间随即实数

round(arg) 四舍五入取整数

%set a [expr round(10.5)]; =>11

sqrt(arg) 求二次根

 

 

5. 字符串操作命令

 tcl笔记_第1张图片

[语法]append varName ?value?

 

[语法]format spec value1 value2 ...

valueX 是变元。对每个变元来讲,其关键词可多达 6 部分:
- 位置说明符;
- 标志;
- 字段宽度;

- 精度;
- 长度;
- 转换符。
转换符之外的关键词都可以看作修饰符。

tcl笔记_第2张图片

format 举例

 % set str [format "%3\$s %1\$s %2\$s" "are" "right" "You"]
=> You are right

%format "%x" 20
=>14 ;# 将 20 转换为十六进制数
%format "%8x" 20
=> 14 ;# 将 20 转换为十六进制数,8 位数据宽度,右对齐
%format "%08x" 20

=>00000014 ;#与上一命令相似,但用 0 添齐
%format "%-8x" 20
=>14 ;#宽度 8 位,左对齐
%format "%#08x" 20
=>0x000014 ;#将 20 转换为十六进制数,并添加前缀”0x”,总宽度为 8 为,右对齐(默认),前导空格用 0 补齐。
% set c [format %c%e%c 40 30000 41 ]
=> ( 3.000000e+004) ;#%c 将整数转换为对应的 ASCII 字符, 40 和 41 分别对应”(“和”)”
% set num [scan Aa %c var1 ]
=> 1 ;#将字符串”Aa”的第一个字符”A”转换为对应整数,并赋值给 var1 变量,返回成功转换个数
% puts $var1
=> 65 ;#字符 A 对应的整数

 

转载于:https://www.cnblogs.com/Ethducky/p/6401242.html

你可能感兴趣的:(tcl笔记)