配列で終了するプロシージャがあります。それを返すには、「array get」を使用してリストを取得します。ただし、このリストには、配列エントリだけでなく、そのインデックスも含まれています。
だから私の配列[ a b c d ]
はリストに変わります{ 0 a 1 b 2 c 3 d }
リストの順序を乱さずにこれらのインデックス番号を削除するにはどうすればよいですか?
を使用する以外のいくつかのオプションforeach
:
# [array get] actually returns a dictionary
puts [dict values $list]
# Could do this too
set entrylist {}
dict for {- entry} $list {
lappend entrylist $entry
}
puts $entrylist
Tcl 8.6 にはさらに多くの可能性があります。
puts [lmap {- entry} $list {set entry}]
( もありますがdict map
、ここでは役に立ちません。)
私は…が好きdict values
です</p>
私が考える最も単純で最も基本的な方法は、foreach
ループを使用することです。
% set list {0 a 1 b 2 c 3 d}
% set entrylist {}
% foreach {id entry} $list {
% lappend entrylist $entry
% }
% puts $entrylist
a b c d
すでに配列があり、Tcl 8.5 以降で作業している場合は、次を使用します dict values
。
set arr(0) a
set arr(1) b
set arr(2) c
set arr(3) d
puts [dict values [array get arr]]
ただし、単純な を使用することをお勧めしますlist
。
set mylist {a b c d}
lset list 1 boo
puts [lindex $mylist 1]
lappend mylist eff
配列は連想的です。いつも。