MEL合宿 -18日目-は、「繰り返し処理」の2つ目「while」についてやっていきたいと思いまーっす!∠( ゚д゚)/
while文
MELでのwhile文は、以下のように記述します。
while(繰り返し条件){ 繰り返し行いたい処理 }
このwhile文は、以下のように処理されていきます(`・ω・´)ゞ
- 「繰り返し条件」が成立するか調べます。成り立たなければ繰り返し処理は終了します。
- ブロック内に書かれた「繰り返し行いたい処理」を行います。
- 1に戻ります。
while文は、for文にあった「初期化の式」と「ターン毎の処理の式」がない感じですね!構造はちょーシンプルです。
while文を使ってみる!
while文を使ってみるサンプルとして、選択されたノードを取得してScript Editorにノード名を表示してみたいと思います!
まずは、選択されたノードのリストを変数に代入します。
{ string $selection[] = `ls -sl`; }
次は、while文の条件のために、繰り返した回数を保存するための変数を用意します。一般的にはカウンターっていったりするのかな?!
{ string $selection[] = `ls -sl`; int $i = 0; }
本題のwhileの骨格を書いていきます!「選択されたノード」の回数繰り返すように、if文などでも登場した条件式を書きます。
ここでは、「$iの値が、$selectionの要素数より少ない場合は繰り返す」という意味になります(*´ω`*)b
{ string $selection[] = `ls -sl`; int $i = 0; while($i<`size $selection`){ } }
whileの中に、選択されたノードをScript Editorに表示するようにします!
{ string $selection[] = `ls -sl`; int $i = 0; while($i<`size $selection`){ print ($selection[$i]+"\n"); } }
最後に繰り返した回数を覚えさせている「$i」の値を1つ増やします。コレを忘れると繰り返し処理中に「$i」がずーーーーーっと「0」のままなので無限ループになってしまいます(;´∀`)
while文ではついついカウンターを更新しわすれて無限ループになりやすいので、まじでご注意ください!
{ string $selection[] = `ls -sl`; int $i = 0; while($i<`size $selection`){ print ($selection[$i]+"\n"); $i++; } }
適当にMayaでノードを選択して実行すると、以下のようになります∠( ゚д゚)/
まとめ!
- while文は、条件が成立している間繰り返す!
- for文にあった「初期化の式」と「ターン毎の処理の式」がない!
- 無限ループになりやすいので、よくよく注意する!
それでは次回もお楽しみに!!(`・ω・´)ゞ