lesson 11 : proc应用 (带默认参数)
1.//使用过程的时候,不一定输入所有的参数值。过程的输入参数可以有默认值。默认值由
{默认参数名 默认值}指定。如果调用过程时没有指定这些参数的值则会使用其默认值,
否则使用输入值来替代默认值。在使用默认参数的时候要注意,如果默认参数之后还有
非默认参数,则在调用此过程的时候,默认参数的值也要求输入,否则会出错。这是因
为 Tcl 调用过程的时候是根据位置来匹配参数和输入值的
2.如果参数列表中最后一个参数是 args 的话,则过程可以接收可变数目的输入参数。当调用过
程时,除了指定参数以外的参数值都被 args 接收。如果参数列表中只有 args 一项,则 args 接
收所有输入参数值
example ① :调用函数的返回值的用法
proc Test { a {b 7} {str "Hello world"} } {
puts "$str"
return [expr $a * $b ]
}
puts "[Test 7 7 ] "
example ② :
proc test {args} {
puts "input values are : $args"
}
test my name is zhouli
result : input values are : my name is zhouli
//验证了开头第二点说的
example ③ :
proc config_sys {args} {
array set inArr $args
parray inArr
}
config_sys -sysName "HUB100" -ipAddr 192.168.10.1 -date 2003-11-21 -time 21:03:45
result :
inArr(-date) = 2003-11-21
inArr(-ipAddr) = 192.168.10.1
inArr(-sysName) = HUB100
inArr(-time) = 21:03:45
//先放一放
//进入本课正题!!咳咳
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]
//例子结合了很多简单用法,不做解释