パッケージおよびネームスペースとして「利用可能」な .tcl ファイルのプロシージャを使用したいと考えています。
b/w 'package require' と 'namespace import' を区別できません
パッケージおよびネームスペースとして「利用可能」な .tcl ファイルのプロシージャを使用したいと考えています。
b/w 'package require' と 'namespace import' を区別できません
それらは完全に別個の概念です。
名前空間は、コマンドと変数を含むためのコード構造です。そして他の名前空間。(他にもいくつかありますが、それらが主なものです。)
パッケージは、定義されたバージョン管理されたAPIを提供するファイルのコレクションです。source
これは、個々のファイルをingおよびingするだけの抽象化load
であり、通常はパッケージの実装の一部であると見なす必要があります。
通常、パッケージによって定義されたすべてのコマンドと変数を同じ名前の名前空間に保持するか、パッケージがパッケージと同じ名前の単一のコマンドを定義することをお勧めします。これは混乱の量を減らします!ただし、これは進化したグッドプラクティスであり、このように機能しないパッケージが多数あります。これは、多くの場合、元々パッケージメカニズム全体よりも前から存在しているためです。もちろん、いくつかのベストプラクティスを使用してすべてを超正確に変更することは、既存のコードとの互換性を維持することほど良くはありません。
名前空間を使用して、コードの実装を整理します。パッケージを使用して、コードを分割し、独立して進化できる定義済みのタスクを作成します。これらは完全に直交しています。