tcl脚本学习十一:proc应用 (带默认参数)

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]
//例子结合了很多简单用法,不做解释

时间: 2024-10-09 23:20:03

tcl脚本学习十一:proc应用 (带默认参数)的相关文章

tcl脚本学习十:proc 子函数的使用

lesson 10 :proc 子函数的使用 1. proc sum {arg1 arg2} { set x [expr $arg1+$arg2]; return $x } puts " The sum of 2 + 3 is: [sum 2 3]\n\n" //[语法] :proc procName { var1 var2 ... } {body}说明:1. proc 命令有三个参数:procName 是定义的过程名字:{var1 var2 ...}是输入.输出参数列表:body 是

tcl脚本学习十三:列表命令集

lesson 13 : 列表命令集 list arg1 arg2 ... 创建一个列表lindex list index 返回列表 list 中的第 index 个元素(element)值llength list 计算列表 list 元素个数 example ① : 创建一个List ,List的用法 1. set l1 [list Sun Mon Tues] =>Sun Mon Tues ;#列表 l1 含有三个元素 2. set l2 [list $l1 Wed] => {Sun Mon

tcl脚本学习五:基本运算

lesson 5 :基本数学计算 1. set X 100;set Y 256;set Z [expr "$Y + $X"]//亦可以写成 set Z [expr {$Y +$X}] 2. set Z_LABEL "$Y plus $X is "puts "$Z_LABEL $Z"puts "The square root of $Y is [expr sqrt($Y)]\n"//求开方的算式 expr 外面一般要带上[]作为

tcl脚本学习八:while循环的使用

lesson8 :while循环的使用 1. set x 1;while {$x < 5} { puts "x is $x"; set x [expr $x + 1] }//tcl里面的while 记得以{结束第一行,原因是告诉编译器这段话没结束 2. set x 0;while "$x < 5" { set x [expr $x + 1] if {$x > 7} break; if "$x > 3" continue;

tcl脚本学习七:if的学习

lesson 7 : if的学习 1. set x 1; if {$x == 2} {puts "$x is 2"} else {puts "$x is not 2"} if {$x != 1} { puts "$x is != 1" } else { puts "$x is 1" }//if的基本用法 2. if $x==1 {puts "GOT 1"}//可以if里面的判断语句可以不加括号 3. set

tcl脚本学习九:for循环的学习

lesson9 :for循环的学习 for {puts "Start"; set i 0} {$i < 2} {incr i; puts "I after incr: $i"; } { puts "I inside first loop: $i" } //和c一样 有三个条件 ;# Because the test is evaluated before the body,;# this loop won't execute the bod

tcl脚本学习二:特殊符号学习

lesson 2 :特殊符号学习 ! example ① : set Z "zhou li "set Z_LABEL "boy " puts "$Z_LABEL $Z"puts "$Z_LABEL \$Z" // 可通过 \将特殊符号输出,和C语言一样 example ② : 1. puts "\nI have $100.00 bill"//如果这样会报错 :提示100.00非法 ps: \n是换行 2.

tcl脚本学习一 :熟悉tcl代码风格

set X "this is a boy "set Y "zhouli "puts $Xputs $Y set label "the value in Y is: " puts "$label $Y" // 总结 : 1. #注释2. tcl不支持.net中的形如int , double ,char等等类型,唯一支持的就是string类型3. 变量:在tcl变量不需要声明就可以直接赋值4. 取得变量的值可以在对应的变量名前面加

tcl脚本学习四: [] ,“” ,{} 的学习以及嵌套使用

lesson 4 1. set x "abc"puts "A simple substitution: $x\n"//简单的例子 2. set y [set x "def"]puts "Remember that set returns the new value of the variable: X: $x Y: $y\n"//当使用[]的时候,会将 []内的返回值作为y所定义的值 3. set z {[set x &quo