(Translated by https://www.hiragana.jp/)
Tcl - Wikipedia

カテゴリ / テンプレート

Tclティクルスクリプト言語げんごひとつであり、コマンドぎょうのみで構造こうぞう文法ぶんぽうをフォローしてしまう非常ひじょうにシンプルな文法ぶんぽう特徴とくちょうとする。

Tcl
最新さいしんばん
8.6.15[1] / 2024ねん9がつ13にち (22にちまえ) (2024-09-13)
最新さいしん評価ひょうかばん
9.0b3[2] / 2024ねん7がつ31にち (2かげつまえ) (2024-07-31)
リポジトリ ウィキデータを編集
対応たいおうOS クロスプラットフォーム
プラットフォーム クロスプラットフォーム
ライセンス オープンソース
公式こうしきサイト https://www.tcl.tk/
テンプレートを表示ひょうじ
Tcl
パラダイム 手続てつづがた
登場とうじょう時期じき 1988ねん
設計せっけいしゃ John Ousterhout
開発かいはつしゃ John Ousterhout、Tcl コアチーム
最新さいしんリリース 8.6[3]/ 2012ねん7がつ27にち (12ねんまえ) (2012-07-27)
型付かたつ 動的どうてき型付かたつ
おも処理しょりけい ActiveTcl
影響えいきょうけた言語げんご AWKLISP
影響えいきょうあたえた言語げんご PowerShell[4]、Tea
ウェブサイト tcl.sourceforge.net
拡張子かくちょうし .tcl
テンプレートを表示ひょうじ

Tclはその非常ひじょう強力きょうりょくGUIツールキットであるTkにより、GUIツールを素早すばやつくげるのにてきした強力きょうりょくなスクリプティング環境かんきょう構築こうちくできる。この両者りょうしゃわせTcl/Tkティクル・ティーケーばれる。ただしTkはクロスプラットフォームなGUI環境かんきょうとしても有名ゆうめいで、TclにかぎらずPerlPythonRubyなどの言語げんご環境かんきょうからも利用りようできる。

Tcl/Tkは、スクリプト言語げんごTclとGUIツールキットTkからなる 非常ひじょう強力きょうりょくなGUIスクリプティング環境かんきょうである。現在げんざい各種かくしゅオペレーティングシステム(UNIXWindowsMacintoshじょう動作どうさする。ほかにもウェブブラウザじょうでTcl/Tkを動作どうささせるプラグインTcletティクレットがある。

背景はいけい

編集へんしゅう

Tclがカリフォルニア大学だいがくバークレーこうのジョン・ケネス・オースターハウト博士はかせ[注釈ちゅうしゃく 1]により最初さいしょ開発かいはつされたのは1988ねんことである。当時とうじアプリケーションプログラムにまれる拡張かくちょうようスクリプト言語げんごには標準ひょうじゅんがなく、アプリケーションごと独自どくじ言語げんご実装じっそうされていた。そのためアプリケーション使用しようしゃはツールごとことなるスクリプト言語げんご習得しゅうとく余儀よぎなくされた。この効率こうりつさをなげいたオースターハウトは、状況じょうきょう打開だかいするために UNIX アプリケーションにおける標準ひょうじゅんとなる拡張かくちょうスクリプト言語げんごをデザインしようとかんがえた。こうしてつくられたのがTclのはじまりである。そのためTclはアプリケーションへのみが容易よういであることを重視じゅうししてデザインされた。具体ぐたいてきには処理しょりけいをライブラリとして提供ていきょうすることでC言語げんごかれたアプリケーションに容易よういめることや、言語げんご構造こうぞう簡素かんそであり、かつたか拡張かくちょうせいつこと、インタプリタ言語げんごであることがげられる。

TkはTclよう開発かいはつされた、非常ひじょう簡単かんたんなコードでGUIを作成さくせいできるツールキットである。1990年代ねんだい初頭しょとうにTclにバンドルされるかたち公開こうかいされた。AppleHyperCard触発しょくはつされて開発かいはつされたとう。当初とうしょTclの有用ゆうよう活用かつよう事例じれいひとつとして紹介しょうかいされたTkだが、そのあつかいやすさからTcl言語げんごとも一躍いちやく人気にんきがつく。Tcl は当初とうしょ設計せっけい意図いとことなり、アプリケーションの言語げんごとして使つかわれるよりも、Tkとわせた「Tcl/Tk」のかたちのGUIスクリプティング環境かんきょうとして人気にんきはくした。とくにTkの人気にんきたかく、TclにとどまらずPerl(Perl/Tk)、Python(Tkinter)、RubyRuby/Tk)など、言語げんごでも標準ひょうじゅんてきなGUIキットとして Tkが利用りようされた。

オースターハウトがサン・マイクロシステムズつとめていた1994-1998ねんはTcl/Tkは同社どうしゃ開発かいはつすすめられた。このころのサンは WWW クライアント環境かんきょう制覇せいは邁進まいしんしていた時期じきであり、Tcl/Tkもそのながれのうえ、その対象たいしょう領域りょういきをウェブにひろげていく。ウェブブラウザじょうでTk GUIを動作どうささせるプラグイン「Tcletティクレット」や、ブラウザのスクリプト言語げんごとしてのTclのみ、国際こくさい対応たいおう内部ないぶ処理しょりのUNICODE)、インタプリタからバイトコンパイラへの変更へんこうによる実行じっこう速度そくど大幅おおはば向上こうじょうなど、Tcl/Tkはこの時期じき機能きのうてきにもっともおおきな進歩しんぽたした。しかし技術ぎじゅつとの競合きょうごうやブラウザでのサポートのうすさなどもあり、WWWを「だいのTk」として人気にんき拡大かくだいすることは出来できなかった。

オースターハウトの退職たいしょくともない、Tcl/Tkの開発かいはつはサンのはなれた。2000ねんからはTcl/Tkの開発かいはつオープンソースにそのうつし、精力せいりょくてき開発かいはつつづけられている。

2005ねん現在げんざいTcl言語げんごは「Tcl/Tk」の知名度ちめいどとは裏腹うらはら利用りようしゃすうすくなく、PerlやPython、Rubyにくら劣勢れっせいわざるをない。とく日本にっぽん国内こくないでの利用りようしゃすうすくない。ただし、EDAツールにおいては標準ひょうじゅんてきなスクリプト言語げんごとしてひろ利用りようされているほか、電子でんし国土こくどWebシステムにおいても一部いちぶでTcl言語げんご使つかわれている。一方いっぽうTkは、後発こうはつGTK+Qtならび、軽量けいりょうプログラミング言語げんごにおける事実じじつじょう標準ひょうじゅんGUIツールキットのひとつとなっており、ひろ利用りようされている。

なお、Tcl言語げんご名前なまえは「ツールコマンド言語げんご」を意味いみする英語えいごtool command language」に由来ゆらいし、Tkの名前なまえは「ツールキット」を意味いみする英語えいご「toolkit」に由来ゆらいする。

特徴とくちょう

編集へんしゅう

ここではTcl言語げんご特徴とくちょうしるす。

Tcl言語げんご特徴とくちょう一言ひとことでいえば「すべ文字もじれつ」である。Tclは、

  • コマンドぎょう順次じゅんじ実行じっこうのみのシンプルな文法ぶんぽう
  • 首尾しゅび一貫いっかんしたリスト構造こうぞう

ふたつをわせ、非常ひじょうちいさいルールで広範囲こうはんい領域りょういきをカバーするてんにある。コマンドぎょうはひとつのリストであり、先頭せんとう要素ようそがコマンド、それ以降いこう要素ようそがコマンドへの引数ひきすうとしてあつかわれる。LISP 言語げんご同様どうよう一貫いっかんせいつとえるが、リストの要素ようそ分離ぶんり記号きごうがブランクやタブであるため、これらの文字もじ無視むしされる一般いっぱんのプログラム言語げんごれたひとには「とまどい」をあたえるかもしれない。

リスト構造こうぞう

編集へんしゅう

リストは文字もじれつである。リストを構成こうせいする要素ようそはブランクかタブで区切くぎられる。ブランクやタブを要素ようそふくめたい場合ばあいには、その要素ようそをブレス({})でさしはさめばい。以下いか文字もじれつみっつの要素ようそからるリストである。

 This is {a pen}

リストの抽出ちゅうしゅつ

編集へんしゅう

Tclパーサーがソースコードからコマンドぎょうとしてリストをすとき、ひとつのリストの終端しゅうたん改行かいぎょうコードかセミコロン(;)で判断はんだんする。しかし改行かいぎょうコードやセミコロンがブレスの内側うちがわにあれば、それをリストの終端しゅうたん記号きごうとはなさない。したがって、以下いかの3ぎょう文字もじれつは3つの要素ようそからるひとつのリストである。改行かいぎょうコードは3あるが、最後さいご改行かいぎょうコードだけがリストの終端しゅうたん記号きごう役割やくわりたす。

 if {$a<0} {
   set a 0
 }

上記じょうきリストは Tcl の if コマンドでありC言語げんごif ぶんている。しかしブレスがリスト記述きじゅつ記号きごうとして採用さいようされているのでているだけである。上記じょうきif コマンドを以下いかのように改行かいぎょう位置いちえると、ifコマンドの引数ひきすうエラーになる。

 if {$a<0}
 {
   set a 0
 }

Tclパーサーは上記じょうき4ぎょう文字もじれつを2つのリストとして認識にんしきする。したがって先頭せんとうぎょうifコマンドぎょう引数ひきすうがひとつだけしかあたえられていないことになり、引数ひきすうエラーが発生はっせいする。

ここで重要じゅうようなのは、エラーをかえしたのは if コマンドであり、Tclパーサーが検出けんしゅつした「文法ぶんぽうエラー」ではないということである。Tclには制御せいぎょぶんなどの「ぶん」はない。分岐ぶんきかえしなどの実行じっこう制御せいぎょたんにコマンドによって実現じつげんされているだけである。「Tclにはこまかなルールがい」のであり、そこにはリスト構造こうぞうと、以下いか解説かいせつする「特殊とくしゅ記号きごう」しかない。

ブラケット記号きごう(コマンド置換ちかん

編集へんしゅう

Tclパーサーはリストの先頭せんとう要素ようそつねにコマンドめいとして認識にんしきする。それ以外いがい要素ようそはコマンドにわたすべき引数ひきすうとして認識にんしきする。しかし、その引数ひきすう要素ようそがブラケット([])ではさまれていると、その中身なかみをコマンドぎょう認識にんしきし、それを実行じっこうしてから本来ほんらい引数ひきすうもとめてくれる。これが「コマンド置換ちかん」である。

 set a [expr 100*2]

$記号きごう変数へんすう置換ちかん

編集へんしゅう

Tclパーサーは変数へんすう機能きのう提供ていきょうによりコマンドあいだでのデータのわたしもあつかってくれる。変数へんすうはsetコマンドにより生成せいせいされる。そして、$記号きごう先頭せんとういた要素ようそへんすうめいとみなし、その要素ようそ全体ぜんたい置換ちかんする。これが「変数へんすう置換ちかん」である。

 set a {This is a pen.}
 puts $a

変数へんすう置換ちかんはコマンドぎょう先頭せんとう要素ようそたいしても機能きのうする。つまりコマンドめい変数へんすうあたえることも可能かのうである。

変数へんすう置換ちかんは1かいしか実行じっこうされない。変数へんすう置換ちかん結果けっか文字もじ$」がふくまれていてもさい置換ちかんこころみられることはない。

また、変数へんすう置換ちかんられた文字もじれつにブランクがふくまれていても、2つの引数ひきすうとしてではなく、ブランクがふくまれた1つの引数ひきすうとしてわたされる。引数ひきすう分離ぶんり(リストの認識にんしき)は変数へんすう置換ちかんまえおこなわれるからである。もし置換ちかん結果けっかからあらためて引数ひきすう分離ぶんりおこなわせたいなら eval コマンドを利用りようする。

ダブルクォーテーション記号きごう

編集へんしゅう

リスト構造こうぞう解説かいせつしたように、ブレス({})は、改行かいぎょうコードなどの特殊とくしゅ文字もじ機能きのう無効むこうする。この法則ほうそくはコマンド置換ちかんであるブラケットや、変数へんすう置換ちかんである$記号きごうたいしてもつらぬかれる。そのため、下記かきのコードではコマンド置換ちかん変数へんすう置換ちかんおこなわれない。

 puts {[expr 100*$num] えん}

そのため、実行じっこう結果けっかとして出力しゅつりょくされる文字もじれつ以下いかのものになる。

[expr 100*$num] えん

コマンド置換ちかん変数へんすう置換ちかん機能きのうさせ、かつブランクをふく文字もじれつをひとつの引数ひきすうとして puts コマンドにわたすには、ブレスのわりにダブルクォーテーション(")でさしはさめばい。

 puts "[expr 100*$num] えん"

num変数へんすうに3がセットされていればコマンドの実行じっこう結果けっかとして

300 えん

出力しゅつりょくされる。

このように、ダブルクォーテーションの機能きのうはブレス機能きのうとほぼ同等どうとうであるが、コマンド置換ちかん変数へんすう置換ちかんをTclパーサーにゆるすところがことなる。ダブルクォーテーションのなかでのコマンド置換ちかん変数へんすう置換ちかんは Tcl の特長とくちょうてき機能きのうである。なお、ダブルクォーテーションとブレスの機能きのうは、それらがリスト要素ようそ先頭せんとう末尾まつび記述きじゅつされた場合ばあいにのみ有効ゆうこうである。したれいでは「"」は文字もじとしてあつかわれる。

 set text いしげたら"ゴツン"おとがした

セミコロン記号きごう(マルチコマンド)

編集へんしゅう

複数ふくすうのコマンドを1ぎょう記述きじゅつしたい場合ばあいはコマンドぎょうをセミコロン(;)で区切くぎればい。

 set a 100 ; set b 200; puts [expr $a * $b]

#記号きごう注釈行ちゅうしゃくぎょう

編集へんしゅう

コマンドの位置いちに「#」を記述きじゅつすると行末ゆくすえまでコメントとなされる。「コマンドの位置いちに」ということが重要じゅうようであり、以下いか最後さいごのコードは「#」がコマンドの位置いちにないのであやまりである。

 #初期しょきセット
 # set a 0
 set b 0 ; # 初期しょき
 set c 0   # 初期しょき

バックスラッシュ記号きごう

編集へんしゅう

ひとつのコマンドをふくすうぎょう記述きじゅつしたい場合ばあいは、くだり末尾まつびにバックスラッシュをける。

 command $arg1 $arg2 \
          $arg3 $arg4

$文字もじまえに\をくと$置換ちかん機能きのう抑制よくせいしてたんなる文字もじとしてあつかわせることができる。

 puts "金額きんがく=\$100"

コマンド置換ちかん[])、ブレス({})のまえいた場合ばあい同様どうようである。 基本きほんてきにバックスラッシュにはC言語げんごとほぼおな機能きのうがある。たとえば改行かいぎょうコードは「\n」とける。

補足ほそく引数ひきすうをブレスではさむことのもうひとつの意味いみ

編集へんしゅう

Tclパーサーからわたされた引数ひきすうがコマンド内部ないぶ評価ひょうかされるかかは重要じゅうようである。ここでの評価ひょうかとはコマンド置換ちかん変数へんすう置換ちかんのことである。たとえば算術さんじゅつ演算えんざんおこなexpr コマンドは引数ひきすう内部ないぶ評価ひょうかする。したがって以下いかの2つのコマンドはおな結果けっかかえす。

 expr $a*$b
 expr {$a*$b}

Tclパーサーがおこなってくれずとも、exprコマンドが内部ないぶ変数へんすう置換ちかんしているのでおな結果けっかられるのである。ifコマンドやwhileコマンドはだい1引数ひきすうとしてあたえられた文字もじれつを、コマンド内部ないぶexpr によって評価ひょうかし、その結果けっか使つかう。

 set val true
 if $val {処理しょり}
 while $val {処理しょり}

Tclパーサーはだいいち引数ひきすうの「$val」を評価ひょうかして「true」(文字もじれつ)にえる。同様どうようだい引数ひきすう「{〜処理しょり〜}」を評価ひょうかして、文字もじれつリテラルなのでそのままおな「{〜処理しょり〜}」にえ、以下いかのようにする。

 if true {処理しょり}
 while true {処理しょり}

Tclパーサーはそのtrue{〜処理しょり〜}ifwhile コマンドにわたし、ifwhile コマンドがわった文字もじれつexpr コマンドに「[expr true]」としてわたし、その結果けっかをもって処理しょりつづける。をつけなければならないのは while コマンドは {〜処理しょり〜} をひととお評価ひょうかえたのち再度さいどだいいち引数ひきすうexpr評価ひょうかするが、上記じょうきのコードではあたえられているtrue なので {〜処理しょり〜}なかに「set val false」のようなぶんがあったとしても、だいいち引数ひきすうあたえられたそのものは変化へんかしないので、ループを無限むげんかえすことになる({〜処理しょり〜}なかbreak コマンドがふくまれていない場合ばあい)。

 set val true
 if {$val} {処理しょり}
 while {$val} {処理しょり}

この場合ばあい、Tclパーサーは引数ひきすうじゅん評価ひょうかし、だいいち引数ひきすうとして「{$val}」という4文字もじ文字もじれつリテラルを、だい引数ひきすうとして「{〜処理しょり〜}」を、ifwhile コマンドにわたす。ifwhile コマンドがわった文字もじれつexpr コマンドに「[expr {$val}]」としてわたし、その結果けっかをもって処理しょりつづける。while コマンドは {〜処理しょり〜} をひととお評価ひょうかえたのち再度さいどだいいち引数ひきすうexpr評価ひょうかするが、上記じょうきのコードではあたえられている{$val} なので {〜処理しょり〜}なかで「set val false」のようなぶんがあれば、その評価ひょうかfalse になって、その時点じてんかえ処理しょり終了しゅうりょうする。

一方いっぽうswitchコマンドのだい1引数ひきすう内部ないぶでは評価ひょうかされない。したがって下記かきの2番目ばんめ記述きじゅつ期待きたいする結果けっかられない。

 switch $val {...}
 switch {$val} {...}

もし引数ひきすうをコマンド内部ないぶ評価ひょうかしてくれるならば、その引数ひきすうはブレス({})ではさんでわたしたほう効率こうりつい。Tclパーサーとコマンドの両方りょうほうによる多重たじゅう評価ひょうか処理しょり回避かいひできるからである。このような理由りゆうにより、ifコマンドやwhileコマンドやforコマンドの引数ひきすうつねにブレスではさむべきである。とくにループの条件じょうけんしきかならずブレスではさ必要ひつようがある。ブレスではさまないと変数へんすう置換ちかんされてからループコマンドにわたされてしまうので、定数ていすうならべた条件じょうけんしきになってしまい、無限むげんループをもたらす。

コマンドの拡張かくちょう

編集へんしゅう

コマンドには、Tclパーサーにあらかじめ実装じっそうされているビルトインコマンドと、ユーザーにより作成さくせいされた拡張かくちょうコマンドがある。ユーザーによる拡張かくちょうコマンドの実装じっそう簡単かんたんである。まず、C言語げんごなどで「コマンド本体ほんたい関数かんすう」と「登録とうろくよう関数かんすう」を記述きじゅつし、ダイナミックリンクライブラリファイルに格納かくのうする。そしてみコマンドの loadもちいて拡張かくちょうコマンドを登録とうろくする。

 load hello.dll hello

load コマンドの引数ひきすうには、「ライブラリファイルめい」と「登録とうろくようコマンドめい」をあたえる。load コマンドは、登録とうろくようコマンドめいから「登録とうろくよう関数かんすうめいもとめ、これを実行じっこうしてくれる。たとえば hello コマンドであれば Hello_Init実行じっこうしてくれる。この「登録とうろくよう関数かんすう」のなか本当ほんとう登録とうろく処理しょり記述きじゅつしておく。したがって、たとえば load コマンドにわたしたコマンドめいにライブラリめい意味いみたせ、「登録とうろくよう関数かんすう」のなか複数ふくすうのコマンドを登録とうろくしてしまうことも可能かのうである。

本当ほんとうの」コマンド登録とうろくはC言語げんごのインターフェースよう関数かんすうTcl_CreateCommandTcl_CreateObjCommandもちいておこなう。拡張かくちょうコマンドの実体じったいとなる「コマンド本体ほんたい関数かんすう」を、められたかた引数ひきすうしたがってさき定義ていぎしておき、そのコマンド関数かんすうアドレスと公開こうかいコマンドめい引数ひきすうあたえて実行じっこうすれば登録とうろくされる。

コマンド登録とうろく関数かんすう

int Hello_Init (Tcl_Interp *interp)
  {
  Tcl_CreateObjCommand (interp, "hello", Tcl_HelloCmd, NULL, NULL) ;
  return TCL_OK ;
  }

コマンド本体ほんたい関数かんすう

int Tcl_HelloCmd (ClientData dummy, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv [])
  {
  ...
  return TCL_OK ;
  }

コマンド本体ほんたい関数かんすうは、Tclパーサーからの引数ひきすうを、引数ひきすうかずargc)と引数ひきすう文字もじれつ配列はいれつargv)でる。ただし、引数ひきすう文字もじれつるこの方式ほうしきTcl_CreateCommand 関数かんすう登録とうろくする場合ばあいであり、引数ひきすうをTclオブジェクトでりたい場合ばあいには、うえれいのように Tcl_CreateObjCommand 関数かんすう登録とうろくする。

内部ないぶ構造こうぞう(Tclオブジェクト)

編集へんしゅう

Tclパーサーは、スクリプト文字もじれつり、つね処理しょり結果けっか文字もじれつかえすようにえる。これでは文字もじれつ解析かいせき文字もじコードとバイナリへの変換へんかん頻繁ひんぱんおこなわれていることになり、いかにも効率こうりつわるおもえる。しかしけっしてそのような単純たんじゅんなものではなく、内部ないぶでは可能かのうかぎりバイナリ維持いじしている。Tclスクリプトでバイナリあつかえるのはこのおかげである。

たとえば下記かきのように変数へんすう数値すうちあたえ、その計算けいさん結果けっか変数へんすう格納かくのうするとき、おのおの変数へんすうかた文字もじれつdoubleふたつのかたつ。文字もじれつとして参照さんしょうされるときは文字もじれつがたとしてい、double として参照さんしょうされるとき(計算けいさんしきなかなどで)は double かたとしてうことができる。

 set a 100.0
 set b 200.0
 set c [expr $a * $b]

Tclパーサー内部ないぶにおいて変数へんすうはTclオブジェクトとして存在そんざいしている。Tclオブジェクトは char *intdouble共用きょうようたいった構造こうぞうたいであり、文字もじれつへの変換へんかん要求ようきゅうされないかぎり、int int のまま、double double のまま維持いじされる。スクリプトでは変数へんすうかた宣言せんげんおこなえないが、変数へんすうへのセットでかた仮定かていされ、Tclオブジェクトあいだのデータ移動いどう無駄むだかた変換へんかんおこなわれないように配慮はいりょされている、ということである。

リストも同様どうよう内部ないぶではリストがたのTclオブジェクトとして存在そんざいしている。このような仕組しくみになっているので、リストを作成さくせいするときlist コマンドをもちいるべきであることがかる。また、巨大きょだいなリストを文字もじれつとして全体ぜんたい参照さんしょうするのも効率こうりつわるくするので慎重しんちょうにすべきである。下記かきれいでは変数へんすう listA には文字もじれつとして格納かくのうされるが、listB には int のリストとして格納かくのうされる。こののち、これらの変数へんすうにリスト処理しょりコマンドでアクセスすると、listAたいしては要素ようそ分解ぶんかい処理しょりおこなわれるが、listBたいしては不要ふようとなる。

 set a 100
 set b 200
 set listA "$a $b"
 set listB [list $a $b]

前項ぜんこう解説かいせつしたコマンド登録とうろく関数かんすう後者こうしゃTcl_CreateObjCommand)は、Tclパーサーからの引数ひきすうを、無駄むだ文字もじれつ変換へんかんすることなく、Tclオブジェクトのままでるコマンド関数かんすう登録とうろくするためのものである。

かえしもTclオブジェクトをつうじてかえすことができる。下記かきlong をそのままかえれいである。

 /* longかえれい */
 Tcl_SetLongObj (Tcl_GetObjResult (interp), longVal) ;

かえしのみならず、Tclオブジェクトは不要ふようになったとき自動的じどうてき削除さくじょされる仕組しくみがある。それはTclオブジェクトがつ「参照さんしょうカウンタ」による制御せいぎょである。アプリケーションでTclオブジェクトを作成さくせいし、それを存続そんぞくしたければ参照さんしょうカウンタを増加ぞうかさせておき(Tcl_IncrRefCount)、必要ひつようなしとなったところでげんずる(Tcl_DecrRefCount)ようにする。参照さんしょうカウンタがらされて 0 になったときにのみ、そのオブジェクトは削除さくじょされる。つまり、存続そんぞく廃棄はいき要求ようきゅう自分じぶんだけの都合つごうしておくだけで、削除さくじょのタイミングがコントロールされるという仕組しくみである(スマートポインタ)。

変数へんすうのみならず、スクリプト自体じたいもTclオブジェクトとして存在そんざいしている。

脚注きゃくちゅう

編集へんしゅう

注釈ちゅうしゃく

編集へんしゅう
  1. ^ えい: Dr. John Kenneth Ousterhout

出典しゅってん

編集へんしゅう
  1. ^ Tcl/Tk 8.6”. 2024ねん9がつ19にち閲覧えつらん
  2. ^ Tcl/Tk 9.0”. 2024ねん9がつ19にち閲覧えつらん
  3. ^ Latest Release: Tcl/Tk 8.6.0 (Dec 20, 2012)” (2012ねん12月20にち). 2013ねん1がつ4にち閲覧えつらん
  4. ^ Windows PowerShell : PowerShell and WPF: WTF

外部がいぶリンク

編集へんしゅう