Tcl - Thủ tục

Các thủ tục không có gì khác ngoài các khối mã với một loạt lệnh cung cấp một chức năng có thể tái sử dụng cụ thể. Nó được sử dụng để tránh lặp lại cùng một mã ở nhiều vị trí. Các thủ tục tương đương với các hàm được sử dụng trong nhiều ngôn ngữ lập trình và được tạo sẵn trong Tcl với sự trợ giúp củaproc chỉ huy.

Cú pháp tạo một thủ tục đơn giản được hiển thị bên dưới:

proc procedureName {arguments} {
   body
}

Dưới đây là một ví dụ đơn giản cho quy trình:

#!/usr/bin/tclsh

proc helloWorld {} {
   puts "Hello, World!"
}
helloWorld

Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:

Hello, World!

Thủ tục với nhiều đối số

Dưới đây là một ví dụ về thủ tục với các đối số:

#!/usr/bin/tclsh

proc add {a b} {
   return [expr $a+$b]
}
puts [add 10 30]

Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:

40

Thủ tục với các đối số có thể thay đổi

Dưới đây là một ví dụ về thủ tục với các đối số:

#!/usr/bin/tclsh

proc avg {numbers} {
   set sum 0
   foreach number $numbers {
      set sum  [expr $sum + $number]
   }
   set average [expr $sum/[llength $numbers]]
   return $average
}
puts [avg {70 80 50 60}]
puts [avg {70 80 50 }]

Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:

65
66

Thủ tục với các đối số mặc định

Đối số mặc định được sử dụng để cung cấp các giá trị mặc định có thể được sử dụng nếu không có giá trị nào được cung cấp. Dưới đây là một ví dụ về thủ tục có đối số mặc định, đôi khi được gọi là đối số ngầm định:

#!/usr/bin/tclsh

proc add {a {b 100} } {
   return [expr $a+$b]
}
puts [add 10 30]
puts [add 10]

Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:

40
110

Thủ tục đệ quy

Dưới đây là một ví dụ cho các thủ tục đệ quy:

#!/usr/bin/tclsh

proc factorial {number} {
   if {$number <= 1} {
      return 1
   } 
   return [expr $number * [factorial [expr $number - 1]]]

}
puts [factorial 3]
puts [factorial 5]

Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:

6
120