ユーザ用ツール

サイト用ツール


tcl

Tcl 主要データ構造 早見表 (string, array, dict, list)

Tclにおける主要なデータ構造(文字列、連想配列、ディクショナリ、リスト)の主要操作まとめ。

文字列 (string)

Tclではすべてのデータが本質的に文字列として扱われる。

操作 コマンド例 説明
長さ取得 string length $str 文字列の長さを返す
切り出し string range $str 0 4 指定範囲(インデックス0〜4)を抽出
検索 string first "sub" $str 部分文字列の最初の位置を返す(無ければ -1)
比較 string equal $str1 $str2 完全一致で 1、不一致で 0 を返す
置換 regsub "old" $str "new" result 正規表現による置換
トリム string trim $str 先頭と末尾の空白を削除

リスト (list)

空白で区切られた要素の集まり。

正確には、波括弧やバックスラッシュによって構造化され、空白を含む要素を安全に保持できるTcl固有のデータ形式。

他言語における「配列」や「可変長リスト」の実質的な役割を担う。

操作 コマンド例 説明
初期化・生成 set mylist [list apple banana cherry] 要素を結合してリストを生成(波括弧 {apple banana cherry} も可)
要素の追加 lappend mylist date リストの末尾に要素を追加(変数を直接書き換え)
要素の取得 set item [lindex $mylist 1] インデックス(0から開始)を指定して要素を取得(結果は banana
長さ取得 llength $mylist リストの要素数を返す
範囲抽出 lrange $mylist 0 1 指定範囲(インデックス0〜1)の要素を新しいリストとして抽出
要素の置換 set mylist [lreplace $mylist 1 1 "blueberry"] 指定範囲の要素を置き換えた新しいリストを返す
検索 lsearch $mylist "banana" 一致する要素のインデックスを返す(無ければ -1)
ソート lsort $mylist リストの要素を並び替えた新しいリストを返す(オプションで数値順や降順も可)
ループ処理 foreach item $mylist { puts $item } すべての要素を順に処理

ディクショナリ (dict)

Tcl 8.5で導入。純粋な「値」として扱えるため、プロシージャの引数や戻り値にそのまま利用可能。多重ネストに対応。

操作 コマンド例 説明
初期化・生成 set d [dict create name "Bob" age 30] キーと値のペアから生成
値の参照 set val [dict get $d name] キーを指定して値を取得
値の設定・更新 dict set d age 31 キーに値を設定(変数を直接書き換え)
存在確認 dict exists $d name キーが存在するか確認(1 または 0)
ループ処理 dict for {k v} $d { puts "$k = $v" } キーと値を同時に抽出して反復処理
キー一覧 dict keys $d すべてのキーをリストで返す
削除 dict unset d age 特定のキーと値を削除
ネスト操作 dict set company depts sales mgr "Tom" 階層構造(company → depts → sales → mgr)に値を設定

連想配列 (array)

変数に紐づく伝統的なハッシュ構造。値として他のコマンドに直接渡せないため、参照渡し(upvar)等が必要。

操作 コマンド例 説明
個別代入 set user(name) "Alice" キー name に値を設定
一括代入 array set user {name "Alice" age 25} リストから一括設定
値の参照 set val $user(name) キーを指定して値を取得
存在確認 info exists user(name) キーが存在するか確認(1 または 0)
キー一覧 array names user すべてのキーをリストで返す
ループ処理 foreach key [array names user] { puts $user($key) } 全要素の反復処理
削除 unset user(name) 特定のキーと値を削除
tcl.txt · 最終更新: by Takuya Nishimoto

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki