Tcl - 内置函数



Tcl 提供了许多内置函数(过程)用于各种操作。这包括 -

  • 用于 列表 处理的函数。

  • 用于 字符串 处理的函数。

  • 用于 数组 处理的函数。

  • 用于 字典 处理的函数。

  • 用于 文件 I/O 处理的函数。

  • 用于创建 命名空间 的函数。

  • 用于数学运算的函数。

  • 用于系统操作的函数。

除了数学和系统函数外,上述每个函数都在前面的章节中介绍过。下面将解释数学和系统内置函数。

数学函数

Tcl 中可用的数学函数列在下表中 -

序号 方法及描述
1

abs arg

计算 arg 的绝对值。

2

acos arg

计算 arg 的反余弦。

3

asin arg

计算 arg 的反正弦。

4

atan arg

计算 arg 的反正切。

5

atan2 y x

计算其参数 (y/x) 的商的反切。

6

ceil arg

计算大于或等于一个数字的最小整数。

7

cos arg

计算 arg 的余弦。

8

cosh arg

计算 arg 的双曲余弦。

9

double arg

如果 arg 是浮点数,则返回 arg,否则将 arg 转换为浮点数并返回转换后的值。

10

exp arg

计算指数函数(e 的 arg 次幂)。

11

floor arg

计算小于或等于 arg 的最大整数。

12

fmod x y

计算 x 除以 y 的浮点余数。如果 y 为 0,则返回错误。

13

hypot x y

计算直角三角形斜边的长度 sqrt(x*x+y*y)。

14

int arg

如果 arg 是与机器字长相同的整数,则返回 arg,否则将 arg 转换为整数。

15

log arg

计算 arg 的自然对数。

16

log10 arg

计算 arg 的以 10 为底的对数。

17

pow x y

计算 x 的 y 次幂。如果 x 为负数,则 y 必须是整数。

18

rand

计算 0 到 1 之间的伪随机数。

19

round arg

计算 arg 四舍五入到最接近的整数的值。

20

sin arg

计算 arg 的正弦。

21

sinh arg

计算 arg 的双曲正弦。

22

sqrt arg

计算 arg 的平方根。arg 必须为正数。

23

srand arg

计算 0 到 1 之间的伪随机数。arg(必须是整数)用于重置 rand 随机数生成器的种子。

24

tan arg

计算 arg 的正切。

25

tanh arg

计算 arg 的双曲正切。

26

wide arg

如果 arg 不是 64 位整数,则计算至少 64 位宽的整数(如果 arg 是 32 位数,则通过符号扩展)。

下面给出一些使用数学函数的示例 -

#!/usr/bin/tclsh

namespace import ::tcl::mathfunc::*
puts [tan 10]
puts [pow 10 2]
puts [ceil 10.34]
puts [hypot 10 20]
puts [srand 45]
puts [log 10]
puts [srand 45]

执行上述代码时,会产生以下结果 -

0.6483608274590866
100.0
11.0
22.360679774997898
0.0003521866166741525
2.302585092994046
0.0003521866166741525

系统函数

Tcl 中重要的系统函数包括:

  • clock - seconds 函数,返回以秒为单位的当前时间。

  • clock - format 函数,将秒格式化为日期和时间。

  • clock - scan 函数,扫描输入字符串并将其转换为秒。

  • open - 函数,用于打开文件。

  • exec - 函数,用于执行系统命令。

  • close - 函数,用于关闭文件。

下面列出了一些上述函数的示例 -

#!/usr/bin/tclsh

#get seconds
set currentTime [clock seconds]
puts $currentTime
#get format 
puts "The time is: [clock format $currentTime -format %H:%M:%S]"
puts "The date is: [clock format $currentTime -format %D]"

set date "Jun 15, 2014"
puts [clock scan $date -format {%b %d, %Y}]

puts [exec ls]
puts [exec dir]

set a  [open input.txt]
puts [read $a];
puts $a
close $a

执行上述代码时,会产生以下结果 -

1402819756
The time is: 03:09:16
The date is: 06/15/2014
1402808400
input.txt
main.tcl
input.txt  main.tcl
This is the file you can use to provide input to your program and later on open
   it inside your program to process the input.

file3

下表提供了可用于格式化日期和时间的列表字符串。

序号 格式及描述
1

%a

简写形式的日期,例如:Sun。

2

%A

完整形式的日期,例如:Sunday。

3

%b

简写形式的月份。

4

%B

完整形式的月份。

5

%d

月份中的日期。

6

%j

一年中的儒略日。

7

%m

月份的数字。

8

%y

两位数的年份。

9

%Y

四位数的年份。

10

%H

24 小时制的小时。

11

%I

12 小时制的小时。

12

%M

分钟。

13

%S

秒。

14

%p

AM 或 PM。

15

%D

数字格式的日期,mm/dd/yy。

16

%r

12 小时制的时间。

17

%R

24 小时制的时间,不含秒。

18

%T

24 小时制的时间,含秒。

19

%Z

时区名称,例如 GMT、IST、EST 等。

广告

© . All rights reserved.