第 13 页 共 62 页
2.12 第 12 课:过程 PROC 的参数定义
讲解:
1. 过程的参数赋缺省值:proc name {arg1 {arg2 value}}
2. 过程的不确定个数的参数定义:proc name {arg1 args}
例子:013_proc.tcl
proc example {first {second ""} args} { ;#参数定义:赋缺省值和不确定个数参数定义
if {$second == ""} {
puts "There is only one argument and it is: $first";
return 1;
} else {
if {$args == ""} {
puts "There are two arguments - $first and $second";
return 2;
} else {
puts "There are many arguments - $first and $second and $args";
return "many";
}
}
}
set count1 [example ONE]
set count2 [example ONE TWO]
set count3 [example ONE TWO THREE ]
set count4 [example ONE TWO THREE FOUR]
puts "The example was called with $count1, $count2, $count3, and $count4 Arguments"
2.13 第 13 课:变量的作用域
x 讲解:
1. 全局变量定义:global var1
2. 局部变量:upvar x y 等同于 upvar 1 x y,作用有两个:一是将上一层的 x 的值赋给 y;二是将上
一层的 x 的地址赋给 y,于是修改 y 等于修改 x。1 代表作用范围,也可为 2,3 等,不能为 0
例子:014_varscope.tcl
proc SetPositive {variable value } { ;#此处 variable 只是一个参数名,可以修改为其他的来代替变量
upvar $variable myvar ;#此处也可写为 upvar 1 $variable myvar
if {$value < 0} { set myvar [expr -$value];} else {set myvar $value;}
return $myvar;
}