0

foreachループロジックについてサポートが必要です。

ループ内の最後のステートメントを除いて、各printステートメントの後にコンマを置く必要があります

元:blah,blah2,blahlast

次のコードは、最後のステートメントの後にコンマを置きます。

 foreach row $regions {
            set name [lindex $row 0]
            set id [lindex $row 1]
            puts "{'name':'$name', 'val':'$region_id'}"
            puts ","

        }

ループする回数を数えると、最後の反復でコンマをアンリットするif条件をチェックできるかもしれません。

4

3 に答える 3

5

それにアプローチする別の方法は、印刷するアイテムのリストを作成し、最後に結合することです。

set lines {}
foreach row $regions {
    set name [lindex $row 0]
    set region_id [lindex $row 1] ;# changed this from id to region_id, seemed right
    lappend lines "{'name':'$name', 'val':'$region_id'}"
}
puts [join $lines ",\n"]
于 2012-04-25T05:43:34.803 に答える
3

トリックは、最初の反復を除くすべての反復でコンマを出力することです (つまり、ロジックを逆にする)。

set xs {a b c}
set s ""
set need_comma false
foreach x $xs {
  if {$need_comma} {
    append s ,
  } else {
    set need_comma true
  }
  append s $x
}
puts $s

生み出すだろう

a,b,c

コマンドを探しているだけのように見えることに注意してくださいjoin

于 2012-04-24T23:22:40.980 に答える
0

私は RHSeeger に +1 票を投じました。ただし、TCL リストを Python のリストに変換しようとしているようです。その場合は、最後のコンマを抑制することを心配する必要さえありません: Python では次のことが可能です:

>>> li = [1,2,3,]
>>> len(li)
3

つまり、現在のソリューションが機能します。最後のカンマは気にしないでください。

于 2012-04-26T17:20:33.593 に答える