tcl: create your own lib; namespace, package

  • Must have 
    • directory ./dir, to put all tcl files of your lib
      • pkgIndex.tcl
      • tcl files
  • add ${fullpath of $dir} into tcl lib path

####

  •  pkgIndex.tcl
    • To create pkgIndex.tcl automatically

 

% tclsh
> pkg_mkIndex . *.tcl

 

 

    • pkgIndex.txl contents
package ifneeded file1_space 1 [list source [file join $dir file1.tcl]]
package ifneeded file2_space 1 [list source [file join $dir file2.tcl]]

 

    • add ${fullpath of $dir} into tcl lib path
csh
% setenv TCLLIBPATH /<fullpath>/$dir

% tclsh
> lappend auto_path /<fullpath>/$dir

 

####

  • tcl files
    • file1.tcl
package provide file1_space 1

namespace eval file1_space {

}
  • file2.tcl
    • to require file1_space into file2
package require file1_space

package provide file2_space 1

namespace eval file2_space {

}

 

####

  • namespace usage
    • decare variables
      • variable 
      • set
    • try to get a variable which is not in current namespace
      • add :: before the variable: $::v4
      • which will get the variable $v4 under root namespace
    • get current namespace
      • [namespace current]

 

 

 

 

 

posted @ 2020-09-24 23:10  cynn  阅读(155)  评论(0)    收藏  举报