私は、TCL内の別のプロシージャのスコープ内にのみ存在するプロシージャを作成したいと考えています。
I. 1つのprocだけで呼び出すことができます。出来ますか?この次のリンクによると、 :http://wiki.tcl.tk/463
しかし、誰かがそれを行う別の方法を知っているかもしれません。
ありがとうございます。TCLのローカルプロシージャ
0
A
答えて
0
Tclの哲学は、制限するのではなく有効にしています。プログラマは正しいことをすることが信頼されています。
名前空間、同じインタプリタエイリアス、またはOOをソフト制限手順に使用できます。間違って呼び出すことはできませんが、意図的な操作でもアクセスできます。モジュール手続きはしばしば以下のように制限されている。 struct::matrix
を参照してください。
サンドボックス内でプログラムを実行することによってハード制限する手順は、プロシージャを完全に保留するか、特定の手順から呼び出された場合など、特殊な状況下でのみ呼び出すことができます。その識別子は、ローカルにすることにより手続きへのアクセスを制限する
(一つは、単にチェックし、呼び出し元があるが、それは偽装するのは簡単です手順を書くことができます。)
はTclのdoesnの、レキシカルスコープの機能です使用しないでください。最も近い対応するメカニズムは名前空間です。
1
あなたはそのような手続きを制限することはできませんが、ほぼ同じ良いですラムダ項を使用することができます:ラムダの
proc outside {a b c} {
# Lambda terms are two- or three-element lists.
set inside {{d e f} {
return [expr {$d + $e * $f}]
}}
set total 0
for {set i $a} {$i < $b} {incr i} {
# Lambdas have to be explicitly applied with [apply]
set total [apply $inside $total $c $i]
}
return $total
}
puts [outside 3 7 18]
最初の要素:(proc
用など)、仮引数のリストを
セカンドlambda:bodyの要素(proc
の場合)
ラムダ:コンテキスト名前空間の第3のオプション要素。グローバル名前空間のデフォルト値(::
)
関連する問題
- 1. TCL 8.4.13のTCLバイトコードローダ?
- 2. TCL:\。
- 3. NS2のTCLスクリプトジェネレータ
- 4. Tcl/Tkのグラフルーチン
- 5. TCLのASNパーサ
- 6. Tclクイックリファレンス
- 7. のTcl/Tkの:クローズトップレベルウィンドウ
- 8. Tcl:オンザフライコマンドの代入
- 9. ウィンドウのバータイトルオプションTCL/TK
- 10. TCL:プリンタの詳細
- 11. TCL内のRESTサーバー
- 12. tclに複数のリストのtclリストを作成するには?
- 13. エッグドロップTCLアップタイムスクリプト
- 14. tcl shell through apache
- 15. Tcl引き数
- 16. Tcl - encoding convertfrom ascii
- 17. Tcl/TKストップウォッチタイムトラッカー
- 18. TCLキャンバスPixelmap
- 19. "Tclインタプリタエラー"をキャッチ
- 20. AC_ARG_ENABLEはTCL
- 21. lcltain in tcl 8.5.9
- 22. オブジェクト指向TCL
- 23. TcL - リスト編集
- 24. TCLとTCLシリアルポート(COM1)コマンド用のフリーコンパイラまたはインタプリタ
- 25. Vivado GUIのtclスクリプトに引数を渡す方法tcl console
- 26. TCLでのグローバルキーワードの使用
- 27. tcl/tk:キーイベントキューのオーバーフローのバグ?
- 28. TCL 8.5 Fedoraは22
- 29. TCL文字列concat
- 30. Tcl Tk treeview with checkbuttons