Tcl - แพ็คเกจ
แพ็กเกจใช้สำหรับสร้างหน่วยโค้ดที่ใช้ซ้ำได้ แพ็กเกจประกอบด้วยชุดไฟล์ที่มีฟังก์ชันการทำงานเฉพาะ คอลเล็กชันของไฟล์นี้ระบุโดยชื่อแพ็กเกจและสามารถมีไฟล์เดียวกันได้หลายเวอร์ชัน แพคเกจสามารถเป็นชุดของสคริปต์ Tcl ไลบรารีไบนารีหรือทั้งสองอย่างรวมกัน
แพ็คเกจใช้แนวคิดของเนมสเปซเพื่อหลีกเลี่ยงการชนกันของชื่อตัวแปรและชื่อโพรซีเดอร์ ดูเพิ่มเติมในบทแนะนำ ' เนมสเปซ ' ถัดไปของเรา
การสร้างแพ็คเกจ
สามารถสร้างแพ็คเกจได้ด้วยความช่วยเหลือของไฟล์ขั้นต่ำสองไฟล์ ไฟล์หนึ่งมีรหัสแพ็คเกจ ไฟล์อื่นมีไฟล์แพ็กเกจดัชนีสำหรับการประกาศแพ็กเกจของคุณ
รายการขั้นตอนในการสร้างและใช้งานแพ็คเกจมีให้ด้านล่าง
ขั้นตอนที่ 1: การสร้างรหัส
สร้างรหัสสำหรับแพ็คเกจภายในโฟลเดอร์พูดว่า HelloWorld ให้ไฟล์ชื่อ HelloWorld.tcl พร้อมรหัสดังภาพด้านล่าง -
# /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
ขั้นตอนที่ 2: การสร้างดัชนีแพ็คเกจ
เปิด tclsh เปลี่ยนเป็นไดเรกทอรี HelloWorld และใช้คำสั่ง pkg_mkIndex เพื่อสร้างไฟล์ดัชนีดังที่แสดงด้านล่าง -
% cd /Users/rajkumar/Desktop/helloworld
% pkg_mkIndex . *.tcl
ขั้นตอนที่ 3: การเพิ่ม Directory ใน Autopath
ใช้คำสั่ง lappend เพื่อเพิ่มแพ็คเกจในรายการส่วนกลางดังที่แสดงด้านล่าง -
% lappend auto_path "/Users/rajkumar/Desktop/helloworld"
ขั้นตอนที่ 4: การเพิ่มแพ็คเกจ
เพิ่มแพ็กเกจต่อไปในโปรแกรมโดยใช้คำสั่ง package require ดังแสดงด้านล่าง -
% package require HelloWorld 1.0
ขั้นตอนที่ 5: เรียกใช้ขั้นตอน
ตอนนี้ทุกอย่างกำลังตั้งค่าเราสามารถเรียกใช้ขั้นตอนของเราได้ดังที่แสดงด้านล่าง -
% puts [HelloWorld::MyProcedure]
คุณจะได้รับผลลัพธ์ดังต่อไปนี้ -
HelloWorld
สองขั้นตอนแรกสร้างแพ็คเกจ เมื่อสร้างแพคเกจแล้วคุณสามารถใช้มันในไฟล์ Tcl ใดก็ได้โดยเพิ่มสามคำสั่งสุดท้ายดังที่แสดงด้านล่าง -
lappend auto_path "/Users/rajkumar/Desktop/helloworld"
package require HelloWorld 1.0
puts [HelloWorld::MyProcedure]
คุณจะได้รับผลลัพธ์ดังต่อไปนี้ -
HelloWorld