2009-08-07

namespace ensemble

namespace ensemble(アンサンブル)は Tcl 8.5 で加わった namespace のサブコマンドです。

名前空間をコマンド名、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 件のコメント: