次の TCL 関数は n 回呼び出されます。numid と type がこの関数に渡されるたびに、各型の numid をラップしようとしています。
例えば
渡された値が次の場合
2 BLACK
1 RED
1 BLACK
3 BLUE
1 BLUE
2 BLUE
2 RED
私が得ている出力は、 set_numid_type 関数を使用して次のとおりです
black_color_str 2 1
red_color_str 1 2
blue_color_str 3 1 2
しかし、私が必要とする出力は次のとおりです。型が連続していない場合は、別の変数型に追加する必要があります。
black_color_str 2
red_color_str 1
black_color_str 1
blue_color_str 3 1 2 (since BLUE color is called in sequence)
red_color_str 2
proc set_numid_type {numid type} {
variable black_color_str
variable red_color_str
variable blue_color_str
if {$type == "BLACK"} {
if {![info exists black_color_str] || ![llength $ black_color_str]} {
set black_color_str ""
}
lappend black_color_str $numid
}
if {$type == "RED"} {
if {![info exists red_color_str] || ![llength $ red_color_str]} {
set red_color_str ""
}
lappend red_color_str $numid
}
if {$type == "BLUE"} {
if {![info exists blue_color_str] || ![llength $ blue_color_str]} {
set blue_color_str ""
}
lappend blue_color_str $numid
}
}