2014-04-03

TCL, PROC

Syntax:  proc name args body

name - 給新程序一個名子
args - 參數清單. 不帶參數也可, 放一組空大括號 {} 即可.
body - 呼叫程序時要被執行的程式碼
proc add {op1 op2} {
     puts [expr $op1 + $op2]
}

add 5 6
add 3 2
add 1 2

Output:
11
5
3

RETURN
程序回傳值. 命令回傳執行的結果, 被回傳的值用來當作命令的代換結果.
proc sum {val} {
     set sum 0

     for {set i 1} {$i <= $val} {incr i} {
          incr sum $i
          return $sum
     }

}

puts [sum 5]

Output
15

Define Variable 
$val2 已被定義為 1, 如 add 時沒給第2個參數, 則 $val2 的值就是 1.
如果 val2 後還有 val3, val4..... 等, 則val2 後的所有變數都要有值.
Wrong example: proc add {val1 {val2 1} val3}

此例的 val3也要有值.
proc add {val1 {val2 1}} {
     return [expr $val1+$val2]
}

puts [add 3 4]
puts [add 5]      -----> 沒給第2個參數, 則 $val2 的值就是 1, 所以是 5+1=6

Output:
7
6

不固定數量的參數
proc add {val args} {
     set result $val

     foreach {item} $args {
           incr result $item
           return $result
     }
}

puts [add 3]
puts [add 1 2 3 4 5 6]   ---> 2~6 會以清單的格式存在 args.

Output:
3
21

沒有留言:

張貼留言