パズルのピースがいくつか欠けています。proc A
パッケージの一部であるファイルで宣言したとしても、A
グローバルに作成されます。
このpackage
コマンドは、tcl がどのファイルをソースにするかを判断するのに役立ちます。あなたは通常package provide
、namespace
package provide abc
namespace eval ::abc {
proc A {} {puts stdout "I am in namespace [namespace current]"}
proc B {} {..}
proc C {} {..}
}
この関数を呼び出すには、次のようにします。
::abc::A
の本体の内側から、A
使用することで、現在の名前空間を知ることができますnamespace current
これを書く別の方法は次のようになります
namespace eval ::abc {}
proc ::abc::A {} {puts stdout "I am in namespace [namespace current]"}
proc ::abc::B {} {..}
proc ::abc::C {} {..}
パッケージと名前空間の間に 1 対 1 のマッピングはありません。したがって、1 つのパッケージで多くの名前空間を作成できます (または、例のように名前空間がありません)。
ライブラリのビルド方法については、このページをご覧ください:
http://www.tcl.tk/man/tcl8.5/tutorial/Tcl31.html
package
およびhttp://www.tcl.tk/man/tcl8.6/TclCmd/contents.htmの完全な手順については、このページnamespace