在修复上一篇CATIA插件的BUG时,接触到了新的语言TCL。有点兴趣,这就了解一下。
官方网站https://www.tcl.tk/基本是从这个网站上进行学习。
[TOC]
基本语法
Hello world
创建一个文本文件,改名字为test.tcl,用文本编辑器打开,可以使用Atom打开,配合TCL的语法高亮插件,食用更美味。
注意TCL一行语句的结尾没有;
作为分割
#!/usr/bin/tclsh
puts "Hello, World!"
然后,在test.tcl文件所在的文件夹内启动git bash.输入
tclsh test.tcl
就可以看到输出Hello, World!了
注释
# 使用#进行单行注释
#!/usr/bin/tclsh
# 使用if 0 可以多行注释,也就是跳过
if 0 {
my first program in Tcl program
Its very simple
}
#行内注释使用 ;#。下面给出一个例子。
puts "Hello World!" ;# my first print in Tcl program
标示
TCL不允许标点字符,如@和%标识符。TCL是大小写敏感的语言
有一些是保留的关键字,不能使用,参见保留字
命令语法
Tcl命令的语法如下。
commandName argument1 argument2 ... argumentN
变量
申明变量和使用变量
#将3 赋给变量a
set a 3
# 使用变量a
puts $a
数据类型及变量
基本类型
set num 3
set selfword test
set selfwords "test words"
#使用“”和{}时,即相当于赋值了字符串,也相当于创建的是数组
set numgroup {this is a group too}
数组
# 获得数组groupVarib的大小
[array size groupVarib]
赋值和取值
set languages(0) Tcl
set languages(1) "C Language"
puts $languages(0)
puts $languages(1)
列表
相当于list,
set listName { item1 item2 item3 .. itemn }
# 将数组转为list对象
set listName [split "items_separated_by_a character" _]
#列表长度
llength listName
字典
下面例子中key=english,value=80
set marks(english) 80
puts $marks(english)
句柄
TCL句柄通常用于表示文件和图形对象。这些可以包括句柄网络请求以及其它渠道,如串口通讯,套接字或I/O设备。下面是创建一个文件句柄的例子
set myfile [open "filename" r]
变量
TCL支持变量中数据格式的默认转换,
#这时候,stringnum中应该是字符串类型
set stringNum "2"
#在执行expr公式计算的时候,stringnum自动转成了实数
set sum [expr $stringNum +20];
定义公式
上面例子中,使用[]
,将一个公式框出来,其中expr
指定了后面的为一个数学公式。
逻辑控制
IF
和C#,c++一样的语法
set a 10
#check the boolean condition using if statement
if { $a < 20 } {
# 执行的语句
}
else
{ }
Switch
switch的语法类似,分支不用写case
switch switchingString {
matchString1 {
body1
}
default {
puts "Invalid grade"
}
}
循环
while循环,条件是用{}
包裹
while { $a < 20 } {
puts "value of a: $a"
# 逐级增加 a 的值
incr a
}
for循环,用三个{}
表示常规条件的设置
for { set a 10} {$a < 20} {incr a} {
puts "value of a: $a"
}
循环支持,break
和continue
语法
函数
- 用
proc
作为关键字,下面定义了一个add函数,包含两个变量a,b。执行函数的格式是 [add 参数1 参数2]
proc add {a b} {
return [expr $a+$b]
}
puts [add 10 30]
- 可变参数函数,其中
{numbers}
是
proc avg {numbers} {
set sum 0
foreach number $numbers {
set sum [expr $sum + $number]
}
set average [expr $sum/[llength $numbers]]
return $average
}
puts [avg {70 80 50 60}]
- 带默认参数的函数,其中参数b的默认值为100
proc add {a {b 100} } {
return [expr $a+$b]
}
puts [add 10 30]
puts [add 10]
- 有一类特殊的函数,递归函数,有专门的关键字
factorial
proc factorial {number} {
if {$number <= 1} {
return 1
}
return [expr $number * [factorial [expr $number - 1]]]
}
puts [factorial 3]
版权属于:CraZyMoNk
本文链接:https://blog.peacharc.com/archives/318.html
转载时须注明出处及本声明