Tcl过程相当于其他语言中的函数、方法,是一系列可复用代码的集合。
定义及使用
Tcl过程可通过proc命令定义。
proc procdureName {?arg1 arg2 ... argN?} {body}
proc sayHello {} {
puts "Hello world!"
}
sayHello
定长参数
proc add {num1 num2} {
return [expr $num1 + $num2]
}
puts [add 1 2]
变长参数
变长参数实际上是向过程传入一个可迭代数据结构实现的。
proc addAll {nums} {
set sum 0
foreach num $nums {
set sum [expr $sum + $num]
}
return $sum
}
puts [addAll {1 2 3 4 5}]
默认参数
proc procedureName { arg1 {arg2 defaultValue}... } { body }
proc add {num1 {num2 1}} {
return [expr $num1 + $num2]
}
puts [add 1]
puts [add 1 2]
混合使用
三种参数形式可以混合使用,但是要注意的是默认参数必须在最后面,可以后多个默认参数。
proc add {num1 num2 {num3 1}} {
set sum [expr $num1 + $num3]
foreach num $num2 {
set sum [expr $sum + $num]
}
return $sum
}
puts [add 1 {}]
puts [add 1 {2 3 4} 5]
递归调用
proc factorial {number} {
if {$number<=1} {
return 1
} else {
return [expr $number * [factorial [expr $number -1]]]
}
}
puts [factorial 5]
puts [factorial 8]