名前空間をコマンド名、proc コマンドで定義した名前空間内のユーザーコマンド(手続き)をサブコマンド名として、名前空間の外から扱えるようになります。サブコマンドとして扱うコマンドは -subcommands オプションにリストで指定します。
簡単なサンプルを紹介します。
namespace eval test {
namespace ensemble create -subcommands [list abcd efgh]
proc abcd {} {
puts "-- subcommand 'abcd'! --"
}
proc efgh {} {
puts "-- subcommand 'efgh'! --"
}
proc ijkl {} {
puts "-- command 'ijkl' in namespace test --"
}
}
このサンプルを test.tcl というファイル名で保存し、tclsh を起動して source コマンドで保存したファイルを読み込んで、コマンドを実行してみます。
$ tclsh
% source test.tcl
% test
wrong # args: should be "test subcommand ?argument ...?"
% test abcd
-- subcommand 'abcd'! --
% test efgh
-- subcommand 'efgh'! --
% test ijkl
unknown or ambiguous subcommand "ijkl": must be abcd, or efgh
% test::ijkl
-- command 'ijkl' in namespace test --
0 件のコメント:
コメントを投稿