tcl/tkリファレンス-リスト操作lset
.
.
名前
lset-リストの要素を変更
構文
lset varName ?index...? newValue
説明
lsetコマンドはvarNameパラメータを受信し、varNameはリスト変数です.コマンドは0つ以上のindexを受信することができ、複数のindexは連続的に配列することができ、リスト形式で現れることができる.最終的にvarNameの要素として新しい値を受信します.indexがない場合、コマンド形式は次のとおりです.
または
この場合、変数varNameの値はnewValueに置き換えられます.
インデックスが1つしかない場合、lsetコマンドはvarNameをリストとして処理します.index番目の要素の位置を指摘しました(0はリストの最初の要素を指す).リストを解釈するとき、lsetはTclコマンド解釈器のかっこ、引用符、反スラッシュに関する処理規則に従うが、変数置換やコマンド置換は起こらない.コマンドはnewValueを使用して要素を置換した列表を構築する.この新しいリストは変数varNameに格納され、lsetコマンドもこの新しいリストを返す.
indexが負数または$varName要素以上の数である場合、エラーが発生します.
各indexの数値はコマンドstring indexと同じで、1つのindexと複数のindexをサポートします.
追加のindex変数がある場合、各変数はサブリストの要素を指定し、スクリプトがサブリストの要素を変更することを許可します.コマンド:
または
最初のサブリストの2番目の要素の代わりにnewValueを使用します.
index変数としては、0以上の整数で、対応するリストの長さより小さくなければなりません.つまり、lsetコマンドはリストのサイズを変更できません.上記の要件を満たさないとエラーが発生します.
例
以下の各例において、初期値xの値は以下のようになる.
コマンドは結果を返し、xの値を変更します.エラーが発生した場合、xの値は変更されません.
以下の各例において、初期値xの値は以下のようになる.
コマンドは結果を返し、xの値を変更します.エラーが発生した場合、xの値は変更されません.
.
名前
lset-リストの要素を変更
構文
lset varName ?index...? newValue
説明
lsetコマンドはvarNameパラメータを受信し、varNameはリスト変数です.コマンドは0つ以上のindexを受信することができ、複数のindexは連続的に配列することができ、リスト形式で現れることができる.最終的にvarNameの要素として新しい値を受信します.indexがない場合、コマンド形式は次のとおりです.
lset varName newValue
または
lset varName {} newValue
この場合、変数varNameの値はnewValueに置き換えられます.
インデックスが1つしかない場合、lsetコマンドはvarNameをリストとして処理します.index番目の要素の位置を指摘しました(0はリストの最初の要素を指す).リストを解釈するとき、lsetはTclコマンド解釈器のかっこ、引用符、反スラッシュに関する処理規則に従うが、変数置換やコマンド置換は起こらない.コマンドはnewValueを使用して要素を置換した列表を構築する.この新しいリストは変数varNameに格納され、lsetコマンドもこの新しいリストを返す.
indexが負数または$varName要素以上の数である場合、エラーが発生します.
各indexの数値はコマンドstring indexと同じで、1つのindexと複数のindexをサポートします.
追加のindex変数がある場合、各変数はサブリストの要素を指定し、スクリプトがサブリストの要素を変更することを許可します.コマンド:
lset a 1 2 newValue
または
lset a {1 2} newValue
最初のサブリストの2番目の要素の代わりにnewValueを使用します.
index変数としては、0以上の整数で、対応するリストの長さより小さくなければなりません.つまり、lsetコマンドはリストのサイズを変更できません.上記の要件を満たさないとエラーが発生します.
例
以下の各例において、初期値xの値は以下のようになる.
set x [list [list a b c] [list d e f] [list g h i]]
→ {a b c} {d e f} {g h i}
コマンドは結果を返し、xの値を変更します.エラーが発生した場合、xの値は変更されません.
lset x {j k l}
→ j k l
lset x {} {j k l}
→ j k l
lset x 0 j
→ j {d e f} {g h i}
lset x 2 j
→ {a b c} {d e f} j
lset x end j
→ {a b c} {d e f} j
lset x end-1 j
→ {a b c} j {g h i}
lset x 2 1 j
→ {a b c} {d e f} {g j i}
lset x {2 1} j
→ {a b c} {d e f} {g j i}
lset x {2 3} j
→ list index out of range
以下の各例において、初期値xの値は以下のようになる.
set x [list [list [list a b] [list c d]] /
[list [list e f] [list g h]]]
→ {{a b} {c d}} {{e f} {g h}}
コマンドは結果を返し、xの値を変更します.エラーが発生した場合、xの値は変更されません.
lset x 1 1 0 j
→ {{a b} {c d}} {{e f} {j h}}
lset x {1 1 0} j
→ {{a b} {c d}} {{e f} {j h}}