Tcl - Gói

Các gói được sử dụng để tạo các đơn vị mã có thể tái sử dụng. Một gói bao gồm một tập hợp các tệp cung cấp chức năng cụ thể. Tập hợp các tệp này được xác định bằng một tên gói và có thể có nhiều phiên bản của cùng một tệp. Gói có thể là một tập hợp các tập lệnh Tcl, thư viện nhị phân hoặc kết hợp cả hai.

Gói sử dụng khái niệm không gian tên để tránh xung đột của tên biến và tên thủ tục. Kiểm tra thêm trong hướng dẫn ' không gian tên ' tiếp theo của chúng tôi .

Tạo gói

Một gói có thể được tạo với sự trợ giúp của tối thiểu hai tệp. Một tệp chứa mã gói. Tệp khác chứa tệp gói chỉ mục để khai báo gói của bạn.

Dưới đây là danh sách các bước để tạo và sử dụng gói.

BƯỚC 1: Tạo mã

Tạo mã cho gói bên trong thư mục HelloWorld. Đặt tên tệp là HelloWorld.tcl với mã như hình dưới đây -

# /Users/rajkumar/Desktop/helloworld/HelloWorld.tcl 
# Create the namespace
namespace eval ::HelloWorld {
 
  # Export MyProcedure
  namespace export MyProcedure
 
  # My Variables
   set version 1.0
   set MyDescription "HelloWorld"
 
  # Variable for the path of the script
   variable home [file join [pwd] [file dirname [info script]]]
 
}
 
# Definition of the procedure MyProcedure
proc ::HelloWorld::MyProcedure {} {
   puts $HelloWorld::MyDescription
}

package provide HelloWorld $HelloWorld::version
package require Tcl 8.0

BƯỚC 2: Tạo chỉ mục gói

Mở tclsh. Chuyển sang thư mục HelloWorld và sử dụng lệnh pkg_mkIndex để tạo tệp chỉ mục như hình dưới đây:

% cd /Users/rajkumar/Desktop/helloworld 
% pkg_mkIndex . *.tcl

BƯỚC 3: Thêm thư mục vào đường dẫn tự động

Sử dụng lệnh lappend để thêm gói vào danh sách chung như hình dưới đây:

% lappend auto_path "/Users/rajkumar/Desktop/helloworld"

BƯỚC 4: Thêm gói

Tiếp theo thêm gói vào chương trình bằng cách sử dụng câu lệnh package request như hình dưới đây -

% package require HelloWorld 1.0

BƯỚC 5: Thủ tục mời

Bây giờ, mọi thứ đang được thiết lập, chúng ta có thể gọi thủ tục của mình như hình dưới đây -

% puts [HelloWorld::MyProcedure]

Bạn sẽ nhận được kết quả sau:

HelloWorld

Hai bước đầu tiên tạo gói. Sau khi gói được tạo, bạn có thể sử dụng nó trong bất kỳ tệp Tcl nào bằng cách thêm ba câu lệnh cuối cùng như hình dưới đây:

lappend auto_path "/Users/rajkumar/Desktop/helloworld"
package require HelloWorld 1.0
puts [HelloWorld::MyProcedure]

Bạn sẽ nhận được kết quả sau:

HelloWorld