1

配列で終了するプロシージャがあります。それを返すには、「array get」を使用してリストを取得します。ただし、このリストには、配列エントリだけでなく、そのインデックスも含まれています。

だから私の配列[ a b c d ] はリストに変わります{ 0 a 1 b 2 c 3 d }

リストの順序を乱さずにこれらのインデックス番号を削除するにはどうすればよいですか?

4

3 に答える 3

5

を使用する以外のいくつかのオプション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>

于 2013-07-11T13:26:43.547 に答える
1

私が考える最も単純で最も基本的な方法は、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
于 2013-07-11T13:00:23.597 に答える
0

すでに配列があり、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

配列は連想的です。いつも。

于 2013-07-11T13:27:07.783 に答える